String会创建几个对象,常量池

String s = new String("xyz");创建了几个String Object? 二者之间有什么区别?

6个回答

1.如果String常理池中,已经创建"xyz",则不会继续创建,此时只创建了一个对象new String("xyz");
2.如果String常理池中,没有创建"xyz",则会创建两个对象,一个对象的值是"xyz",一个对象new String("xyz")

楼上正解,s只是引用。。一楼在说什么鬼

String s = new String("xyz");创建3个(作为参数的xyz一个new String一个,s一个)
String s = "xyz";创建2个
两者等价,后者更简单,更快,占用内存少。

这个是一个面试题,答案是2个。一个字符串常量“xyz”放在内存区的datasegment(有四块内存区),一个是放在堆的new出来的对象的实体,这个实体被栈的String类型的对象引用s所指向。

String s = new String("xyz"); 创建2个String 对象
"xyz" new 了一个,常量池一个

http://www.cnblogs.com/ydpvictor/archive/2012/09/09/2677260.html

创建对象的话,先要加载构造器的参数,所以先要加载"xyz",如果"xyz"加载了就不加载了,直接用。然后再用构造器创建对象。所以创建几个对象
是要看参数是不是已经加载了

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问
相关内容推荐