本帖最后由 波涛 于 2014-5-20 02:04 编辑
Integer a=new Integer(127); //Integer整型包装类,当普通类对待即可,栈中a存放Integer在堆中的地址,指向堆空间开辟的一个区域, 存放了127
Integer b=new Integer(127);//同样栈里的b指向堆内存中新区域也存放一个127
System.out.print(a==b);// “==”是判断内存地址是否相等; a、b指向堆中的地址显然不同所以,故为false
System.out.print(a.equals(b));//equals() 是判断两个对象的值是否相等,而不管它们的内存地址是否相等, 由于其值皆为127,故为true
-------------------------------------------------------------------------
-------------------------------------------------------------------------
所以注意以下形式的比较:
- public static void main(String []args) {
- Integer a = 100;
- Integer b = 100;
- System.out.println(a==b); //true
- }
复制代码 但是
- public static void main(String []args) {
- Integer a = 200;
- Integer b = 200;
- System.out.println(a==b); //false
- }
复制代码 如有地方不对,请楼下随时吐槽。 共同学习~
|