所以 String 不是原始类型,而是一个类,类的对象通常必须以 Obj x = new Obj ();
的形式创建。但是,可以通过 String x = "...";
创建字符串,这是首选方式,而不是 String x = new String ("...");
.
所以我想知道为什么字符串允许这样做,如果构造函数只需要一个参数,是否有可能以类似的方式创建其他类的对象。
例如,如果一个类有一个只调用一个整数的构造函数,那么说 Obj x = 2;
在语法上是正确的,因为它仍然以与字符串被写入。
最佳答案
String是一个特殊的final类,不能扩展。使用new关键字和文字创建字符串是不同的;
堆中有一个专门用于存放字符串的内存区域,叫做String Pool。当您创建一个字符串文字时,jvm 会搜索字符串池,如果它存在于该字符串所在的池中,如果与您创建的字符串不匹配,则将其添加到池中以及具有相同值地址的其他字符串对象也是。
如果您使用new 关键字创建一个字符串,则无论如何都确保该字符串是一个内存中的新对象。
所以String是一种特殊的对象,不能与其他对象归为一类。
这是一篇文章
关于java - 没有=newObj()可以实例化new对象吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47668098/