"abc"是一个常量字符串对象,是存储在字符串常量池中的,且只有一个。
String s = "abc"中s是String类型的引用,指向在常量池中的字符串常量"abc",所以只有一个对象。
String s = new String("abc");首先通过new在堆中创建了一个String对象,并用s指向它。而"abc"则因是字符常量放在常量池中。所以有两个对象。另外这个构造函数的源码如下:
String是对一个字符串数组的封装,扩展其功能。String s = new String()实际上就是将"abc"中的内容copy给s所指向的字符串对象。
|
|