作为Java程序员,在日常开发中经常会遇到一些低级错误或者难以理解的情况。以下2个常见的问题,涉及到Java的基础知识,这2个基础知识小坑90%以上的程序员都踩过
1. ==号比较的坑
在比较Integer类型的对象时,一些程序员小伙伴可能会使用==来判断它们是否相等。然而,这种用法并不总是正确的。例如,对于Integer对象,==比较的是对象的引用而非值,因此结果可能出乎意料。我们应该养成使用equals()方法来判断两个Integer对象是否相等的良好习惯
Integer status1 = new Integer(1);
Integer status2 = new Integer(1);
System.out.println(status1 == status2);
思考:返回结果是什么?
答案:false
我们小伙伴会说了,Java不是中为了节省内存和提高性能,会对一定范围内的Integer对象进行缓存。范围默认是在 -128 到 127 之间,怎么没有生效?
我们来看一下Integer构造方法
public Integer(int value) {
this.value = value;
}
发现在Integer构造方法中并没有使用缓存
思考:Integer缓存在哪里使用?
在Integer类的valueOf方法中
public static Integer valueOf(int i) {
if (i >= IntegerCache.low && i