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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 海中的游弋草 黑马帝   /  2011-12-20 13:30  /  1787 人查看  /  2 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 海中的游弋草 于 2011-12-20 18:09 编辑

public class ObjectTest2
{
        public static void main(String[] args)
        {
                Object object = new Object();
                Object object2 = new Object();

                System.out.println(object == object2);//false

                System.out.println("----------------");


                String str = new String("aaa");
                String str2 = new String("aaa");

                System.out.println(str == str2);//false

                System.out.println("----------------");

                String str3 = "bbb";
                String str4 = "bbb";

                System.out.println(str3 == str4);//true
               
                System.out.println("----------------");

                String str5 = new String("ccc");
                String str6 = "ccc";

                System.out.println(str5 == str6);//false

                System.out.println("----------------");

                String s = "hello";
                String s1 = "hel";
                String s2 = "lo";

                System.out.println(s == s1 + s2);//false            ---这里结果为什么为false
       
                                System.out.println("----------------");

                System.out.println(s == "hel" + "lo");//true   ---这里结果为什么为true   

                    给一个比较详细的解释????

        }
}

评分

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

查看全部评分

2 个回复

倒序浏览
String pool 就是String 池,也就是内存的 Data segment 区,专放静态变量和字符串的区,

比如:

String a="Hello";
那么字符串"Hello"就放在 String pool 中,如果是 String a = new String("Hello"),那么就放在内存的heap(堆)里面

String str1="asd";
String str2="asd";
结果是str1==str2
因为String str1="asd";先会检查String pool中是否有asd这个字符串,若存在不必另外划分区间str2直接引用str1,这样能节省存储的空间

评分

参与人数 1技术分 +2 收起 理由
admin + 2

查看全部评分

回复 使用道具 举报
恩 明白!原来string中有一个String 池!  谢谢
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马