用户操作
[留言]  [发消息]  [加为好友] 
订阅我的博客
XML聚合    FeedSky
订阅到鲜果
订阅到Google
订阅到抓虾
ilrxx的公告
文章分类
    存档

    转载  ==与equals()的区别 收藏

    class A
    {
        int a=1;
    }
    public class p142
    {
        public static void main(String args[])
        {
            A obj1=new A();
            A obj2=new A();
            String s1,s2,s3="abc",s4="abc";
            s1=new String("abc");
            s2=new String("abc");
            System.out.println("s1.equals(s2)是"+(s1.equals(s2)));
            System.out.println("s1==s3是"+(s1==s3));
            System.out.println("s1.equals(s3)是"+(s1.equals(s3)));
            System.out.println("s3==s4是"+(s3==s4));  //我觉得s3!=s4,因为不是指向同一首地址
            System.out.println("s2.equals(s3)是"+(s2.equals(s3)));
            System.out.println("s1==s2是"+(s1==s2));
            System.out.println("obj1==obj2是"+(obj1==obj2));
            System.out.println("obj1.equals(obj2)是"+(obj1.equals(obj2)));  //这里我觉得
                                                                                  //应该是相同的吧,内容一样啊/
            obj1=obj2;
            System.out.println("obj1=obj2后obj==obj2是"+(obj1==obj2));
            System.out.println("obj1=obj2后obj1.equals(obj2)是"+(obj1.equals(obj2)));
        }
    }

    (1) s3="abc",s4="abc";

    这样赋值的String 对象 在java里面会先去查看一个String的常量池

    如果已经创建了 ,则不再重复创建,直接指向常量池中的那个已经存在对象

    s3 已经在常量池中创建了,所以s4也指向s3的那个对象

    (2)equeals方法是Object的方法 默认是 按照 内存地址比较
    除非你重写

    public boolean equals(Object obj) {
    return (this == obj);
        }


    上面是Object中equals方法,可以看到如果你不在A中重写这个方法

    就会默认按照地址比较

    发表于 @ 2008年06月04日 16:02:00 | 评论( loading... ) | 编辑| 举报| 收藏

    旧一篇:常用数据库连接方法 | 新一篇:必须掌握的八个【cmd 命令行】

    • 发表评论
    • 评论内容:
    •  
    Copyright © ilrxx
    Powered by CSDN Blog