为什么Integer a = 127,b = 127;时a==b为true,而Integer c = 128,d = 128;时a==b为false?
如下图:
为什么Integer a = 127,b = 127;时ab为true,而Integer c = 128,d = 128;时ab为false?
其中==为比较这两个数是否相等,而在比较引用数据类型时比较的是他们的内存地址。
而当我们用Integer表示int类型的时候,就会调用静态方法valueOf,如图:
而在这段代码中明确的写着Integer的取值范围,是-128~127;所以当超过这个范围的时候就会重新在堆内存当中new一个新的Integer对象。这个时候内存地址的值不再相同所以就会返回
原创
2021-03-12 19:45:39 ·
764 阅读 ·
0 评论