关于==,再给你举个例子:因为一般==会和equals来比较。
Integer i1=new Integer(2);
Integer i2=new Integer(2);
i1==i2 这就是false
i1.equals(i2) 这是true;
-----------------------------------------------------------------------
总结,你可以不去理会到底有没有在堆内存中有没有开辟新空间,可以这样理解:
如果比的是变量,那只能用==,不能用equals ,这时==比的是堆内存中的值。因为在堆内存中,值一样确实是不开辟新空间,所以地址也是一样的。
如果比的是对象,那==比的时,比的是地址。 用equals比的则是值,理由同上。
而你举的例子全是变量,比的是堆内存中的指向的值。 |