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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© android0276 中级黑马   /  2014-7-5 16:44  /  970 人查看  /  2 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 android0276 于 2014-7-6 20:32 编辑

01: public class Test {
    public static void main(String[] args) {
         String first = "Phone:" + "55555";
         String second = "Phone:" + 55555;
         String third = new String("Phone:") + new String("55555");
         String fourth = new String("Phone:") + 55555;
         System.out.println(first==second);
         System.out.println(first==third);
         System.out.println(first==fourth);
    }
}

评分

参与人数 1技术分 +1 收起 理由
李小然 + 1

查看全部评分

2 个回复

正序浏览
System.out.println(first==second); 结果为true,因为两个字符串的地址值一样.
System.out.println(first==third);   结果为false,因为String third属于new的字符串,他会在堆内存中强制性开辟出一个新的内存,因此另个字符串的地址值不一样,所以为false.
System.out.println(first==fourth);  结果为false,原因和上面的一样.

评分

参与人数 1技术分 +1 收起 理由
李小然 + 1

查看全部评分

回复 使用道具 举报
其他的不多解释,new会强制性的开辟新内存,这样就不会在内存中寻找字符窜,因此只要使用new,就是不一样的,即false

评分

参与人数 1技术分 +1 收起 理由
李小然 + 1

查看全部评分

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马