为什么String()构造函数不是私有的?

rob*_*bin 13 java

在任何场景中使用String()构造函数是否对字符串文字有益?使用字符串文字可以重用现有对象,那么为什么我们需要公共构造函数呢?有没有真正的世界?例如,两个文字都指向同一个对象.

String name1 = "name";//new String("name") creates a new object.
String name2 = "name";
Run Code Online (Sandbox Code Playgroud)

Mic*_*rdt 18

其中一个例子,其中的构造函数有一个有用的目的:通过创建字符串String.substring()共享底层char[]String他们所创造.因此,如果您String的长度为10.000.000(占用20MB内存)并将其前5个字符作为子字符串然后丢弃原始String字符串,则该子字符串仍将使20MB对象无法进行垃圾回收.在它上面使用String构造函数可以避免这种情况,因为它只复制了String实例实际使用的底层char数组的一部分.

当然,如果你创建和使用相同的很多子串String,特别是如果它们重叠,那么你非常希望它们共享底层char[],并且使用构造函数会适得其反.