Java Integer比较,
分享于 点击 10484 次 点评:10
Java Integer比较,
代码

结果:
Integer a = 127; Integer b = 127; a == b ? true 2020-04-13 22:30:47.162 INFO 4492 --- [ restartedMain] com.example.newdemo.IntegerCompare : Integer c = 128; Integer d = 128; c == d ? false 2020-04-13 22:30:47.162 INFO 4492 --- [ restartedMain] com.example.newdemo.IntegerCompare : Integer e = 127; Integer f = new Integer(127); e == f ? false 2020-04-13 22:30:47.162 INFO 4492 --- [ restartedMain] com.example.newdemo.IntegerCompare : Integer g = new Integer(127); Integer h = new Integer(127); g == h ? false 2020-04-13 22:30:47.162 INFO 4492 --- [ restartedMain] com.example.newdemo.IntegerCompare : Integer i = 128; int j = 128; i == j ? true
结论:
-
=比较的是引用
-
equal比较的是integer实际的值
第一个相等,第二个不相等,是因为Interger.valueOf内部做了缓存(-127,127)。
- a, b相同的引用。
- c,d超过了缓存的范围直接new,产生不同的引用,所以不相等。
Integer e = 127;
Integer f = new Integer(127);
e从缓存中读取。f则是新的对象,用=判断时候是两个不同的引用,所以不相等。
Integer g = new Integer(127);
Integer h = new Integer(127);
g和h都是新的引用。
Integer i = 128;
int j = 128;
把装箱的 Integer 和基本类型 int 比较,前者会先拆箱再比较,比较的肯定是数值而不是引用,因此返回 true
相关文章
- 暂无相关文章
用户点评