Java易错点

本文探讨了Java中Integer对象的相等性判断,解释了为何`Integer a = 5; Integer b = 5; a==b`返回true,而`new Integer(10) == new Integer(10)`返回false。还介绍了char[]转化为String的最佳实践,以及如何正确判断两个String对象的相等性。同时,文章提到了静态方法在父类和接口中的使用规则。
摘要由CSDN通过智能技术生成

 

Integer a = 5; Integer b = 5; a==b的结果为true还是false?

解析:true。当整数值在 [ -128, 127 ] 范围内时,下列代码结果始终为true:

Integer a = 5;
Integer b = 5;
System.out.println(a == b);

原因:当执行 Integer x = 5 时,Java采用自动装箱功能,实际上编译器执行了Integer.valueOf(5)的操作。这个方法返回一个 Integer 对象,但是在返回之前,先作一个判断,判断当前 i 的值是否在 [-128,127] 区间内,且 IntegerCache 中是否存在此对象,如果存在,则直接返回引用,否则,创建一个新的对象。

public static Integer valueOf (int i)的官方注释如下:

If an new Integer instance is not required, this method should generally be used in preference to the constructor Integer(int), as this method is likely to yield significant better space and time performance by caching frequently requested values. This method will always cache values ​​in the range -128 to 12

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值