黑马程序员技术交流社区

标题: 【黑马云青年 胡浩】关于String的问题 [打印本页]

作者: 胡浩    时间: 2013-6-1 10:41
标题: 【黑马云青年 胡浩】关于String的问题
string s="abc"; 是在常量池中创建了一个对象
String s1=new String("abc");是在堆内存中创建了两个对象。
那么String s2=new String();
s2="abc";是怎么创建对象的,这个过程和常量池有关系吗?

作者: 石贤芝    时间: 2013-6-1 14:15
  1. String s2 = new String();
  2. s2 = "abc";
复制代码
对于这两行代码我是这么理解的:
new String(); 是堆内存中的对象,"abc" 是字符串常量池中的对象。
s2 先是指向堆内存中的new String();  然后又 s2 又指向常量池中的"abc"对象。
作者: 胡浩    时间: 2013-6-1 16:16
石贤芝 发表于 2013-6-1 14:15
对于这两行代码我是这么理解的:
new String(); 是堆内存中的对象,"abc" 是字符串常量池中的对象。
s2 先 ...

哥们,是这样的吗?
作者: 石贤芝    时间: 2013-6-1 16:37
胡浩 发表于 2013-6-1 16:16
哥们,是这样的吗?

我认为应该是这样。不一定对。

s2 在栈中,可以指向不同的对象。就像如下代码:

String s2 = "abc";
s2 = "bcd";
在这里,s2 先指向"abc",再指向"bcd"一样的道理。






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