之前是我没问清楚,我的纠结点在与两个Integer对象如何判断相等比较方便,因为前者需要判断null,
Integer a = null;
Integer b = new Integer(128);
System.out.print(Objects.equals(a,b));//所以用这个方法来判断相等,就不用判断null了
之前是我没问清楚,我的纠结点在与两个Integer对象如何判断相等比较方便,因为前者需要判断null,
Integer a = null;
Integer b = new Integer(128);
System.out.print(Objects.equals(a,b));//所以用这个方法来判断相等,就不用判断null了
Integer 缓存-128 ~ 127 之间的数字,超出范围外的就只能去new新的对象。
一般都不推荐用==,因为双等比较的是对象是否同一个地址。
一般用equals()方法,equals比较的是内容。
题主第一句得出的结论是错误的:
"一般的当Integer的内容值超过-128~127的时候,如果与int使用==就会返回false。"
尝试了一下 int = 128 或者 int = 127,使用==同样返回true。
public static void main(String[] args) {
int a = 127;
Integer i = new Integer(127);
System.out.println(a == i);
int b = 128;
i = new Integer(128);
System.out.println(b == i);
}
第二个 Integer对象是否为空的问题,参考Integer.equals的实现 先判空,在执行判断条件。
3 回答2.6k 阅读✓ 已解决
3 回答4.1k 阅读✓ 已解决
8 回答3.6k 阅读
4 回答2.8k 阅读✓ 已解决
2 回答2.6k 阅读✓ 已解决
3 回答2.5k 阅读✓ 已解决
3 回答1.7k 阅读✓ 已解决
Integer对象和int使用==进行比较是会使用Integer.intValue进行拆箱,比较的就是int值,返回的是true