黑马程序员技术交流社区

标题: new String对象的时候,内部到底做了什么呢? [打印本页]

作者: 王立浩    时间: 2013-2-3 09:59
标题: new String对象的时候,内部到底做了什么呢?
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的对象,否则就添加到常量池中再返回


作者: 曹睿翔    时间: 2013-2-6 00:34
顶,钻研的精神值得学习




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2