Java疑难点(一)
Contents
正确使用equals()
方法
Object的equals方法容易抛空指针异常,应该使用常量或确定有值的对象来调用equals.
举例:
|
|
运行上面的程序会抛出空指针异常,第二行的判断语句修改后,就不会抛出异常了。
|
|
推荐使用java.util.Objects#equals
(JDK7引入的工具类)
|
|
查看java.utils.Objects#equals
的源码就知道原因了。
|
|
注意
推荐阅读java中equals方法造成空指针异常的原因及解决方案
每种原始类型都有一个默认值。int默认值为0,boolean默认值为false。null是任何引用类型的默认值。不严格的说是所有Object类型的默认值
可以使用==或者!=操作来比较null值,但是不能使用其他算法或逻辑操作,在java中,null==null将返回true
不能使用一个值为null的引用类型变量来调用非静态方法,否则会抛出异常。
整型包装类值的比较
所有整型包装类对象值的比较必须使用equals方法
例子
|
|
当使用自动装箱方式创建一个Interger对象时,当数值在-128~ 127时,会将创建的Integer对象缓存起来,当下次再出现该数值时,直接从缓存中取出对应的Integer对象,上述代码中 x和y引用的是相同的Integer对象。
注意:如果IDE(idea/Eclipse)安装了阿里巴巴的p3c插件,插件监测到使用 == 的话进行报错提示。
In all the good times I find myself longing for change
Author Jachin
LastMod 2019-08-12