1 java memory jvm memory-management shared-memory
可能重复:
整数包装器对象仅在值127内共享相同的实例?
public class test
{
public static void main(String args[])
{
Integer a1=127;
Integer a2=127;
System.out.println(a1==a2); //output: true
Integer b1=128;
Integer b2=128;
System.out.println(b1==b2); //output: false
Long c1=127L;
Long c2=127L;
System.out.println(c1==c2); // output: true
Long d1=128L;
Long d2=128L;
System.out.println(d1==d2); //output: false
}
}
Run Code Online (Sandbox Code Playgroud)
Run Code Online (Sandbox Code Playgroud)true false true false
您也可以使用negetive值.当您使用值观察输出时,它们的行为会有所不同.这种不同结果的原因是什么?
对于任何数字,范围应为-127到+127,==则为true或为false.
(全部)伙计们抱歉这是一个拼写错误,我把它作为原始错误,但它是抽象的.抱歉这个错误.现在纠正了......
整数不是原始的,它是一个对象.如果你使用过int或者long你只会得到true.
得到此结果的原因是整数被缓存为介于-128和127之间的值,因此Integer i = 127将始终返回相同的引用.Integer j = 128不一定会这样做.然后,您需要使用它equals来测试底层的相等性int.
这在Java语言规范#5.1.7中定义.
请注意,该范围之外的值的行为[-128; 127]未定义:
例如,较少内存限制的实现可以缓存所有char和short值,以及-32K到+ 32K范围内的int和long值.
| 归档时间: |
|
| 查看次数: |
101 次 |
| 最近记录: |