Long类型比较的一个小问题

考虑Java中以下代码的输出:

Long a=127L;
Long b=127L; 
System.out.println(a==b);//true
a=128L;
b=128L;
System.out.println(a==b);//false
Long x=new Long(127);
Long y=new Long(127);
System.out.println(x==y);//false
System.out.println(x.equals(y));//true

这里涉及的主要是对象的比较,一般来说对于 Integer、String、Long等的比较我们不要使用 ==,它比较的是两者是不是同一个对象,而不是值相不相同。可是在上面例子中,当Long小于一个字节的时候,会自动存储成变量,这时候却是可以用==比较的。这两者的不一致可能会导致我们测试时出现问题。如果要比较值,我们或者使用equal()方法,或者使用longValue()方法获取到值

猜你喜欢

转载自blog.csdn.net/jiafgn/article/details/78247677