A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 1161272014 注册黑马   /  2012-7-14 09:52  /  1981 人查看  /  5 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

String a="abc";
String b="abc";
System.out.println(a==b);
System.out.println(a.equals(“b”));

点评

警告“1161272014”这位同学!你刚刚注册,一下就发了8个很基础帖子,估计是没看过视频又想刷分的!  发表于 2012-7-14 10:09

5 个回复

倒序浏览
去看老毕的day13
回复 使用道具 举报
直接代码截图说明:

1.png (15.55 KB, 下载次数: 15)

1.png

2.png (12.93 KB, 下载次数: 13)

2.png

评分

参与人数 1技术分 +1 收起 理由
滔哥 + 1

查看全部评分

回复 使用道具 举报
。。。这个也太狠了
回复 使用道具 举报
1.创建String对象的两种方式及区别:
1)String a = "abc";(采用字面值方式赋值):查找String Pool中是否存在"abc"这个对象,如果不存在,则在String Pool中创建一个"abc"对象,然后将String Pool中的这个"abc"对象的地址返回回来,这样a会指向String Pool中的这个"abc"字符串对象;如果存在,则不创建任何对象,直接将String Pool中的这个"abc"对象返回来,赋给a。
2)String b = new String("abc");首先在StringPool中查找有没有"abc"这个对象,如果有,则不在String Pool中再去创建"abc"这个对象,直接在堆中创建一个"abc"字符串对象,然后将堆中的这个"abc"对象返回来,使得b指向了堆中创建的"abc"对象;如果Sting Pool中没有,则先在String Pool中创建一个"abc"字符串对象,再去堆中创建一个"abc"字符串对象,最后返回堆中创建的对象。
2.String类重写了equals方法,其比较的是字符串的内容,代码如下
    public boolean equals(Object anObject) {
        if (this == anObject) {
            return true;
        }
        if (anObject instanceof String) {
            String anotherString = (String)anObject;
            int n = count;
            if (n == anotherString.count) {
                char v1[] = value;
                char v2[] = anotherString.value;
                int i = offset;
                int j = anotherString.offset;
                while (n-- != 0) {
                    if (v1[i++] != v2[j++])
                        return false;
                }
                return true;
            }
        }
3."=="比较的是两个对象在内存中的地址,即两个对象引用是否指向同一个对象。
观察你的代码,你的意图是用判定a、b两个对象引用的equals和==关系。根据第一种字符串对象创建方式可得,均返回true。

评分

参与人数 1技术分 +1 收起 理由
韦念欣 + 1 赞一个!

查看全部评分

回复 使用道具 举报
额,这种问题自己运行一下就很清楚了啊。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马