1
0
mirror of https://github.com/Snailclimb/JavaGuide synced 2025-06-16 18:10:13 +08:00

Update Java疑难点.md

This commit is contained in:
SnailClimb 2019-07-14 22:17:24 +08:00
parent 78813345a3
commit 18e80a8fcf

View File

@ -61,7 +61,7 @@ public static boolean equals(Object a, Object b) {
Reference:[Java中equals方法造成空指针异常的原因及解决方案](https://blog.csdn.net/tick_tock97/article/details/72824894)
- 每种原始类型都有默认值一样如int默认值为0boolean的默认值为falsenull是任何引用类型的默认值不严格的说是所有object类型的默认值。
- 每种原始类型都有默认值一样如int默认值为 0boolean 的默认值为 falsenull 是任何引用类型的默认值,不严格的说是所有 Object 类型的默认值。
- 可以使用==或者!=操作来比较null值但是不能使用其他算法或者逻辑操作。在Java中`null==null`将返回true。
- 不能使用一个值为null的引用类型变量来调用非静态方法否则会抛出异常
@ -81,7 +81,7 @@ System.out.println(a == b);//false
System.out.println(a.equals(b));//false
```
当使用自动装箱方式创建一个Integer对象时当数值在-128 ~127时会将创建的Integer对象缓存起来当下次再出现该数值时直接从缓存中取出对应的Integer对象。所以上述代码中x和y引用的是相同的Integer对象。
当使用自动装箱方式创建一个Integer对象时当数值在-128 ~127时会将创建的 Integer 对象缓存起来当下次再出现该数值时直接从缓存中取出对应的Integer对象。所以上述代码中x和y引用的是相同的Integer对象。
**注意:**如果你的IDE(IDEA/Eclipse)上安装了阿里巴巴的p3c插件这个插件如果检测到你用 ==的话会报错提示,推荐安装一个这个插件,很不错。
@ -155,9 +155,7 @@ Reference:《阿里巴巴Java开发手册》
**正例** : 数据库的查询结果可能是 null因为自动拆箱用基本数据类型接收有 NPE 风险。
**反例** : 比如显示成交总额涨跌情况,即正负 x%x 为基本数据类型,调用的 RPC 服务,调用不成功时,
返回的是默认值,页面显示为 0%,这是不合理的,应该显示成中划线。所以包装数据类型的 null 值,能
够表示额外的信息,如:远程调用失败,异常退出。
**反例** : 比如显示成交总额涨跌情况,即正负 x%x 为基本数据类型,调用的 RPC 服务,调用不成功时,返回的是默认值,页面显示为 0%,这是不合理的,应该显示成中划线。所以包装数据类型的 null 值,能够表示额外的信息,如:远程调用失败,异常退出。
# 2. 集合