| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 790 人关注过本帖
标题:有关"=="和"equals()"的问题
只看楼主 加入收藏
jhtyolg20002
Rank: 1
等 级:新手上路
帖 子:66
专家分:6
注 册:2007-3-29
收藏
 问题点数:0 回复次数:6 
有关"=="和"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 最好 测试 
2012-08-17 22:03
lz1091914999
Rank: 14Rank: 14Rank: 14Rank: 14
来 自:四川
等 级:贵宾
威 望:37
帖 子:2011
专家分:5959
注 册:2010-11-1
收藏
得分:0 
aryC1和aryC2是字符数组,但是他们都是两个不同的对像,所以aryC1==aryC2返回false,因为==比较的是引用。
默认情况下equals方法和==是一样的,比较的都是引用,所以aryC1.equals(aryC2);也返回false。想让equals变得更聪明你需要重写equals方法,但是无法重写数组的equals方法,因为无法继承它。
至于第三个,你可以自己去看看println有多少个重载方法就行了。

My life is brilliant
2012-08-18 16:39
jhtyolg20002
Rank: 1
等 级:新手上路
帖 子:66
专家分:6
注 册:2007-3-29
收藏
得分:0 
谢谢,回复,谢谢!
2012-08-20 22:35
kinor_520
Rank: 1
等 级:新手上路
帖 子:3
专家分:0
注 册:2012-8-20
收藏
得分:0 
好贴,学习了!!!!
2012-08-20 23:37
ciinccb
Rank: 2
等 级:论坛游民
威 望:3
帖 子:10
专家分:36
注 册:2012-9-21
收藏
得分:0 
我来说详细点,顺便复习!
第一个,==比较的是引用,也就是比较的是引用在内存中间的地址,这里的引用是在栈区的,两个引用就有了两个不一样的地址,所以,,false
第二个,比较的是数组的值,理应true,但是equals方法只比较一次,而数组的每个元素都需要比较进行比较后才能得出结果,所以,你需要重写,
进行一个一个的比较,才能得出结果!
第三,前面的输出均为内存中的地址,因为第一个数组为数型数组,调用toString方法得到的只是把地址toString,第二个为Boolean型数组,
和数型的一样,但是第三个是char型,调用toString相当于,new String(char[])转换成了String并且输出就是abc
2012-09-21 17:26
邱威
Rank: 5Rank: 5
等 级:职业侠客
威 望:2
帖 子:136
专家分:351
注 册:2012-3-28
收藏
得分:0 
"=="比较的是对象(地址);
"equals"比较的是内容。(一般单个比较都是ture,但是你这里是数组为false,需重写)。
2012-09-21 18:41
zh2655236
Rank: 1
等 级:新手上路
帖 子:3
专家分:0
注 册:2013-3-1
收藏
得分:0 
好帖子 学习了
2013-03-02 15:20
快速回复:有关"=="和"equals()"的问题
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.019859 second(s), 9 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved