`
freemanxm84
  • 浏览: 21184 次
  • 性别: Icon_minigender_1
文章分类
社区版块
存档分类
最新评论

冒着被删的危险问牛人们一个问题

 
阅读更多
在java中,声明一个对象一般都用,new关键字调用构造函数或利用静态工厂方法。我有一个问题String对象,声明一个对象并初始化时一般是这样
引用
String str = "abc"

那这个字符串建立过程是什么样的,用如下代码
引用
String str = new String("abc")
又是什么样的过程呢?回答之前先考虑下鸡生蛋,蛋生鸡,我想知道的是虚拟机怎么去实现的?
分享到:
评论
3 楼 dennis_zane 2007-07-05  
简单来讲,字面量会被JVM拘留在一个内部维护的常量表中,以后再遇到字面量的字符串指向的将是heap中的同一个字符串对象,而通过new String方法得到的是字符串的拷贝,可以通过intern()方法将该拷贝拘留,此时就指向同一个对象了。
2 楼 freemanxm84 2007-07-05  
i_love_sc 写道
引用
String str = new String("abc")
实质上生成了2个字符串,都是“abc”。


这个我知道,我问的不是这个问题。
1 楼 i_love_sc 2007-07-05  
freemanxm84 写道
在java中,声明一个对象一般都用,new关键字调用构造函数或利用静态工厂方法。我有一个问题String对象,声明一个对象并初始化时一般是这样
引用
String str = "abc"

那这个字符串建立过程是什么样的,用如下代码
引用
String str = new String("abc")
又是什么样的过程呢?回答之前先考虑下鸡生蛋,蛋生鸡,我想知道的是虚拟机怎么去实现的?


引用
String str = new String("abc")

实质上生成了2个字符串,都是“abc”。

相关推荐

Global site tag (gtag.js) - Google Analytics