当前位置: 代码迷 >> Java相关 >> 有关"=="和"equals()"的问题
  详细解决方案

有关"=="和"equals()"的问题

热度:766   发布时间:2012-08-17 22:03:59.0
有关"=="和"equals()"的问题
程序代码:
请各位大哥,帮帮忙,讲解一下1,2,3次输出结果的原因,
最好能一起讲一下,这个过程中的内存控制.

好期待,那个清晰,明确的答案!!!
谢谢了.(代码如下)


package exp20120817;

/**
* 1,测试对"基本类型"数组的引用,使用"=="和"equals()"比较
* 2,测试直接输出 char[]引用 与 int[]引用 有什么不同.

*/
public class Test {

    public static void main(String[] args) {
        char[] aryC1 = {'a','b','c'};
        char[] aryC2 = {'a','b','c'};
      

        boolean isEqual;
        // 1
        isEqual = aryC1==aryC2;
        System.out.println(isEqual);//false
        
// 2
        isEqual = aryC1.equals(aryC2);
        System.out.println(isEqual);//false
      

        int[] aryI = {1,2,3,4,5};
        boolean[] aryB = {false,false,false};
        // 3
        System.out.println(aryI);//[I@de6ced
        System.out.println(aryB);//[Z@c17164
        System.out.println(aryC1);//abc
    }
}
搜索更多相关的解决方案: equals  最好  测试  

----------------解决方案--------------------------------------------------------
aryC1和aryC2是字符数组,但是他们都是两个不同的对像,所以aryC1==aryC2返回false,因为==比较的是引用。
默认情况下equals方法和==是一样的,比较的都是引用,所以aryC1.equals(aryC2);也返回false。想让equals变得更聪明你需要重写equals方法,但是无法重写数组的equals方法,因为无法继承它。
至于第三个,你可以自己去看看println有多少个重载方法就行了。
----------------解决方案--------------------------------------------------------
谢谢,回复,谢谢!
----------------解决方案--------------------------------------------------------
好贴,学习了!!!!
----------------解决方案--------------------------------------------------------
我来说详细点,顺便复习!
第一个,==比较的是引用,也就是比较的是引用在内存中间的地址,这里的引用是在栈区的,两个引用就有了两个不一样的地址,所以,,false
第二个,比较的是数组的值,理应true,但是equals方法只比较一次,而数组的每个元素都需要比较进行比较后才能得出结果,所以,你需要重写,
进行一个一个的比较,才能得出结果!
第三,前面的输出均为内存中的地址,因为第一个数组为数型数组,调用toString方法得到的只是把地址toString,第二个为Boolean型数组,
和数型的一样,但是第三个是char型,调用toString相当于,new String(char[])转换成了String并且输出就是abc
----------------解决方案--------------------------------------------------------
"=="比较的是对象(地址);
"equals"比较的是内容。(一般单个比较都是ture,但是你这里是数组为false,需重写)。
----------------解决方案--------------------------------------------------------
好帖子 学习了

----------------解决方案--------------------------------------------------------
  相关解决方案