【日积月累】Java开发习惯养成

news2024/11/24 12:29:34

主图==========

目录

Java开发习惯养成

  • 1.前言
  • 2.equals()的使用
  • 3.整形包装类型的使用
  • BigDecimal
    • BigDecimal大小比较
    • BigDecimal 保留几位小数
    • BigDecimal注意事项
  • 基本数据类型与包装数据类型的使用标准
  • 数组与List之间的转换的坑
    • 数组转List
    • 数组转ArrayLIst
    • List转数组 反转数组
  • 总结
  • 参考


文章所属专区 日积月累


1.前言

记录一些Java中经常使用的方法,用哪些方法可以避免一些不必要的麻烦,简化开发。

2.equals()的使用

在使用Object的equals方法容易出现空指针异常
推荐使用 java.util.Objects Objects.equals(“”,“”);
源码

 public static boolean equals(Object a, Object b) {
        return (a == b) || (a != null && a.equals(b));
    

!!!不能使用一个值为null的引用类型变量来调用非静态方法,否则会抛出异常

3.整形包装类型的使用

结论:整形包装类型的比较强制用equals()
例子:

Integer i1 = 40;
Integer i2 = new Integer(40);
System.out.println(i1==i2);//false

原因:Integer i1 = 40;这一步发生了装箱,等价于Integer i1=Integer.valueOf(40) ,由于Byte Short Integer Long这四种包装类型在[-128,127] 之间会直接取常量池中的数据 而new Integer()是创建新对象 == 在包装类型比较的是引用地址 两者引用地址不同 而equals在Integer里重写了 比较的是他们的值(这也是我们的目的)

BigDecimal

!!!浮点数(float double)之间的等值判断不能用==,包装数据类型不能用equals()判断。 会出现精度丢失导致异常
可以使用BigDecimal来进行浮点数运算操作

BigDecimal a = new BigDecimal("1.0");
BigDecimal b = new BigDecimal("0.9");
BigDecimal c = new BigDecimal("0.8");
BigDecimal x = a.subtract(b);
BigDecimal y = b.subtract(c);
System.out.println(x); /* 0.1 */
System.out.println(y); /* 0.1 */
System.out.println(Objects.equals(x, y)); /* true */

BigDecimal大小比较

返回 -1 表示 a 小于 b ,0 表示 a 等于 b , 1表示 a 大于 b 。

BigDecimal a = new BigDecimal("1.0");
BigDecimal b = new BigDecimal("0.9");
System.out.println(a.compareTo(b));// 1

BigDecimal 保留几位小数

BigDecimal m = new BigDecimal("1.255433");
BigDecimal n = m.setScale(3,BigDecimal.ROUND_HALF_DOWN);
System.out.println(n);// 1.255

BigDecimal注意事项

【强制】 禁止使用BigDecimal(Double) 把Double对象转为BigDecimal对象
BigDecimal用于操作大浮点数 BigInteger用于操作大整数

基本数据类型与包装数据类型的使用标准

【强制】所有的 POJO 类属性必须使用包装数据类型。

由于sql使用的默认值是null,和包装数据类型一样,且当sql查询不到数据返回null,如果此时用基本数据类型取接受数据回报错

【强制】RPC 方法的返回值和参数必须使用包装数据类型。

当使用RPC远程调用接口失败,返回默认值时,如果是基本数据类型返回0,意义不明显,如果是包装数据类型则可以清楚的了解调用是否失败,当然了要注重对null数据的过滤

【推荐】所有的局部变量使用基本数据类型。

数组与List之间的转换的坑

数组转List

常用的是Arrays.asList()转换

String[] myArray = {"Apple", "Banana", "Orange"};
List<String> myList = Arrays.asList(myArray);
//上面两个语句等价于下面一条语句
List<String> myList = Arrays.asList("Apple","Banana", "Orange");

asList源码

public static <T> List<T> asList(T... a) {
return new ArrayList<>(a);
}

注意这边返回的一个ArrayList 是Arrays里面的一个内部类,底层还是一个数组,不能能使用列表的一些添加 删除方法去操作它。(体现了适配器模式,只转换了接口,后台数据结构不变)
使用asList 传递的数组必须是对象数组,而不是基本类型。

数组转ArrayLIst

List list = new ArrayList<>(Arrays.asList("a", "b", "c"))

List转数组 反转数组

Collections.reverse(list);
list.toArray(必须指定类型);

总结

参考

《阿里巴巴Java开发手册》
JavaGuide

给个三连吧 谢谢谢谢谢谢了
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/974769.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

心法利器[99] | 无监督字面相似度cqr/ctr源码

心法利器 本栏目主要和大家一起讨论近期自己学习的心得和体会&#xff0c;与大家一起成长。具体介绍&#xff1a;仓颉专项&#xff1a;飞机大炮我都会&#xff0c;利器心法我还有。 2022年新一版的文章合集已经发布&#xff0c;累计已经60w字了&#xff0c;获取方式看这里&…

非华为机型如何体验HarmonyOS鸿蒙系统 刷写HarmonyOS鸿蒙GSI系统以及一些初步的bug修复

最近很多视频网站有非华为机型使用HarmonyOS鸿蒙系统的演示。其实大都是刷了HarmonyOS鸿蒙系统gsi系统。体验还可以。有些刷入后bug较多。那么这些机型是如何刷写gsi&#xff1f;可以参考我以往帖子 安卓玩机搞机-----没有第三方包 刷写第三方各种GSI系统 体验非官方系统_gsi刷…

CSS 学习指导

CSS&#xff08;Cascading Style Sheets&#xff09;是一种用于定义网页样式的标记语言。以下是一些基本的CSS知识&#xff0c;可以作为入门教程&#xff1a; CSS语法包括选择器、属性和值。选择器用于选择要样式化的元素&#xff0c;属性是要修改的属性&#xff08;例如&…

二元Logistic回归分析

二元Logistic回归分析 logistic回归多重线性回归分析&#xff0c;该分析方法是研究一个因变量&#xff08;服从正态分布&#xff09;与多个自变量的数量关系。 在医学研究中&#xff0c;常常需要研究的结局变量不是连续型变量&#xff0c;而是二分类变量或多分类变量&#…

山西电力市场日前价格预测【2023-09-06】

日前价格预测 预测明日&#xff08;2023-09-06&#xff09;山西电力市场全天平均日前电价为263.83元/MWh。其中&#xff0c;最高日前电价为335.16元/MWh&#xff0c;预计出现在06:45。最低日前电价为0.00元/MWh&#xff0c;预计出现在12:15-14:30。 价差方向预测 1&#xff1a;…

冠达管理:创业板跟A股有什么区别?

创业板与A股是我国股市中的两种重要股票商场&#xff0c;它们之间存在许多明显的不同之处。本文将从几个角度剖析创业板和A股的区别。 一、商场属性 创业板是我国证券商场中最年青的板块之一&#xff0c;成立于2009年。它是专门为私募企业、创新式企业提供融资途径的股票商场。…

互联网时代,亿发数字化管理平台如何赋能长沙中小企业管理升级?

随着市场需求的不断变化&#xff0c;中小企业需要具备灵活度&#xff0c;能够迅速调整业务战略和生产计划。企业信息化管理平台作为一种集成化的软件系统&#xff0c;专门设计用于满足中小企业的信息技术需求&#xff0c;以增强其管理效率。帮助中小企业更方便地管理其业务流程…

说一说微信小程序开发的好处

在移动互联网日益普及的今天&#xff0c;微信小程序作为一种创新的商业模式&#xff0c;已经在各行各业中得到了广泛应用。对于企业和开发者来说&#xff0c;微信小程序开发具有诸多优势。本文将详细介绍微信小程序开发的好处&#xff0c;并从实战角度来分析如何进行微信小程序…

skywalking springgateway 全链路

环境 spring-cloud-gateway 3.1.0 springGateway整合skywalking skywalking 默认是不整合springGateway的,需要手动拷贝skywalking optional-plugins下的 apm-spring-cloud-gateway-N.x-plugin-8.13.0.jar 和 apm-spring-webflux-5.x-plugin-8.13.0.jar 架包拷贝到plugins目…

centos7环境使用yum源安装docker

目录 1.检查内核相关信息 2.完善yum源 3.开始安装docker 4.docker使用前最后的准备 5.最后运行一下hello-world 1.检查内核相关信息 cat /etc/*release*&#xff1a;查看centos版本&#xff0c;docker支持centos7及以上版本。 uname -a&#xff1a;查看linux的指令集&…

lv3 嵌入式开发-6 linux shell脚本编程(概念、变量、语句)

1 Shell脚本概述 1.1Shell脚本概述 Shell脚本是利用 shell 的功能所写的一个程序。这个程序是使用纯文本文件&#xff0c;将一些 shell 的语法与命令&#xff08;含外部命令&#xff09;写在里面&#xff0c;搭配正则表达式、管道命令与数据流重定向等功能 1.2Shell脚本编写流…

大数据平台数据安全具体措施有哪些?有推荐的吗?

大数据平台是企业处理和分析数据的重要工具之一&#xff0c;也是企业数据存储的重要载体&#xff0c;因此保障大数据平台安全至关重要。那你知道大数据平台数据安全具体措施有哪些&#xff1f;有推荐的吗&#xff1f; 大数据平台数据安全具体措施有哪些&#xff1f; 1、数据…

LeetCode 138. Copy List with Random Pointer【链表,DFS,迭代,哈希表】中等

本文属于「征服LeetCode」系列文章之一&#xff0c;这一系列正式开始于2021/08/12。由于LeetCode上部分题目有锁&#xff0c;本系列将至少持续到刷完所有无锁题之日为止&#xff1b;由于LeetCode还在不断地创建新题&#xff0c;本系列的终止日期可能是永远。在这一系列刷题文章…

四维纵横与用友达成战略合作,携手打造企业数据智能新基座

近日&#xff0c;北京四维纵横数据技术有限公司&#xff08;四维纵横 YMatrix&#xff09;与用友网络科技股份有限公司&#xff08;用友&#xff09;&#xff0c;宣布达成产品战略合作协议。双方将共同致力于为企业提供一站式数据智能解决方案&#xff0c;加速企业应用的全方位…

linux sed 删除空行、替换文本

假设文件&#xff1a;sed.txt first second third fourfive①删除four、five之间的空行 ②替换first为hsj is smart cat sed.txt | sed /^$/d | sed s/first/hsj is smart/g

【Unity-Cinemachine相机】相机跟随之Transposer属性

相机跟随和瞄准行为 Transposer&#xff1a;虚拟相机将在某个固定的偏移或距离上跟随目标移动 上面的偏移量就是Follow Offset Binding Mode决定Follow Offset是目标本地坐标系下的身后十米还是世界坐标系下的身后十米 Lock To Target On Assign&#xff1a;锁定自己和目标本地…

论文浅尝 | 训练语言模型遵循人类反馈的指令

笔记整理&#xff1a;吴亦珂&#xff0c;东南大学硕士&#xff0c;研究方向为大语言模型、知识图谱 链接&#xff1a;https://arxiv.org/abs/2203.02155 1. 动机 大型语言模型&#xff08;large language model, LLM&#xff09;可以根据提示完成各种自然语言处理任务。然而&am…

【LeetCode-中等题】208. 实现 Trie (前缀树)

文章目录 题目方法一&#xff1a;利用数组构建26叉树方法二&#xff1a;利用哈希表构建26叉树 题目 方法一&#xff1a;利用数组构建26叉树 插入图示&#xff1a; 全搜索和前缀搜索&#xff1a; 注意&#xff1a;全局匹配匹配完直接返回插入时的标志位 而前缀匹配时&#xff…

Vagrant命令

文章目录 1.介绍2.下载3. 配置3.1 配置环境变量3.2 在xshell中连接使用 4. 相关命令4.1 Box相关4.2 初始化环境4.4 虚拟机相关 1.介绍 Vagrant 是一个虚拟机管理工具 2.下载 https://www.vagrantup.com/ 3. 配置 3.1 配置环境变量 测试安装是否成功 3.2 在xshell中连接使…

MybatisPlus插件功能详细介绍 自动分页 通用分页实体

本课程全面讲解了Mybatis框架的使用&#xff0c;从快速入门到原理分析再到实战应用。每一个知识点都有案例进行演示学习&#xff0c;最终通过学习你将全面掌握&#xff0c;从而使Mybatis的开发更加的高效&#xff0c;系统学习 通过项目的开发大家应该能发现&#xff0c;单表的C…