String s = new String("xyz");创建了几个String Object? 二者之间有什么区别?
String s = new String("xyz");创建3个(作为参数的xyz一个new String一个,s一个)
String s = "xyz";创建2个
两者等价,后者更简单,更快,占用内存少。
这个是一个面试题,答案是2个。一个字符串常量“xyz”放在内存区的datasegment(有四块内存区),一个是放在堆的new出来的对象的实体,这个实体被栈的String类型的对象引用s所指向。
1.如果String常理池中,已经创建"xyz",则不会继续创建,此时只创建了一个对象new String("xyz");
2.如果String常理池中,没有创建"xyz",则会创建两个对象,一个对象的值是"xyz",一个对象new String("xyz")
String s = new String("xyz"); 创建2个String 对象
"xyz" new 了一个,常量池一个
http://www.cnblogs.com/ydpvictor/archive/2012/09/09/2677260.html
楼上正解,s只是引用。。一楼在说什么鬼
创建对象的话,先要加载构造器的参数,所以先要加载"xyz",如果"xyz"加载了就不加载了,直接用。然后再用构造器创建对象。所以创建几个对象
是要看参数是不是已经加载了