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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

new String对象的时候,内部到底做了什么呢?
看了一下源代码,发现构造函数是这样的,那也就是说其实就是一个简单的复制过程了,将常量池中的字符串的值和hash值全部复制给它
public String(String original) {
        this.value = original.value;
        this.hash = original.hash;
    }
那如果此时常量池中已经存在了original这样的字符串,那具体的复制是如何完成的呢?
例如
String t = "abc" 先有这句
String s = new String("abc");然后再new内存
“abc”.value是什么呢?"abc"在常量池中是怎么存储的呢?如果在常量池中是以String对象存在的话,难道它也是通过String的构造函数建立的,也是上面的那个?额 我咋感觉就陷入循环了
。。。。
找了找发现,原来在String类内部有个native方法
public native String intern();
看到native方法,就有种无力的感觉,看来这个具体如何存储的是看不到了,只能知道常量池中有字符串的时候就直接返回一个String的对象,否则就添加到常量池中再返回

评分

参与人数 1技术分 +1 收起 理由
冯海霞 + 1

查看全部评分

1 个回复

倒序浏览
顶,钻研的精神值得学习
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马