黑马程序员技术交流社区
标题:
为什么说 String s = new String ("abcdef"); 语句创建了两个对象?
[打印本页]
作者:
sharplance
时间:
2015-10-27 20:37
标题:
为什么说 String s = new String ("abcdef"); 语句创建了两个对象?
为什么说 String s = new String ("abcdef"); 语句创建了两个对象?
作者:
C威
时间:
2015-10-27 21:06
只要new出来的都在堆内存,"abcdef"在常量池也是对象,有地址
作者:
qq739617099
时间:
2015-10-27 21:37
String s = new String ("abcdef");
看结果猜过程
我猜应该是这样 String s = new String ("abcdef"); 就等于
new String().name = s;
new String().属性 = “abcdef”;
这个属性应该根据类中的成员属性来决定
作者:
北极的男娃
时间:
2015-10-27 21:41
还没学到String 不懂
作者:
NUMONE
时间:
2015-10-27 21:42
感谢楼上,学习了
作者:
lkjmnbqwe
时间:
2015-10-27 21:43
String这个类比较特别 除了堆内存还在字符串池建对象
作者:
sxfhblf123
时间:
2015-10-27 21:50
受教了,多谢
作者:
307117758
时间:
2015-10-27 22:31
"abcdef"在常量池里,堆里面开辟了一个空间存地址值,另外new出来的肯定有对象,也有地址值,可以用toString打出来看看地址值。
作者:
大头爱傻瓜
时间:
2015-10-27 22:35
堆中一个,字符串常量池一个,没记错的话应该是这样
作者:
myworkspace
时间:
2015-10-27 22:58
字符串"abcdef"会存在常量池中, new出来的对象存放在堆内存.
作者:
polarfox17
时间:
2015-10-27 23:00
不是很懂。。。。
作者:
jyf823691221
时间:
2015-10-27 23:01
楼下讲得好 支持一个
作者:
达达达
时间:
2015-10-27 23:36
一个new String是一个对象,存在堆内存; "abcdef"也是一个对象,存在方法区的常量池。
作者:
redsifei
时间:
2015-10-27 23:56
String s=new String("aaa");
变量s在栈中 他存着一个地址指向堆中new出来的对象,堆中又存着一个地址指向常量池中的字符串常量。
作者:
_let'sgo
时间:
2015-10-28 14:08
刚学习了,String类比较特殊,new在内存中开辟了一个空间,一个对象,“abcdef”本身是一个对象。所以是两个对象。
作者:
顽固派。
时间:
2015-10-28 14:38
不就只创建了一个对象吗,哪来的两个对象。
作者:
Seven、HQ
时间:
2015-10-28 17:11
字符串是特殊的引用数据类型,abcdef存储在常量池中,也作为一个常量对象,String s也是一个对象
作者:
qi8215686
时间:
2015-10-28 19:45
值是一样的,new 出的指向常量池中的字符串,地址不一样,所以是2个
作者:
KyluS
时间:
2015-10-28 21:30
堆内存跟栈内存各一个吧
作者:
sharplance
时间:
2015-10-28 21:46
常量池的概念我还不太清楚,总之先记下了。
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2