gpt4 book ai didi

java - 没有=newObj()可以实例化new对象吗?

转载 作者:行者123 更新时间:2023-12-03 19:10:58 26 4
gpt4 key购买 nike

所以 String 不是原始类型,而是一个类,类的对象通常必须以 Obj x = new Obj (); 的形式创建。但是,可以通过 String x = "..."; 创建字符串,这是首选方式,而不是 String x = new String ("...");.

所以我想知道为什么字符串允许这样做,如果构造函数只需要一个参数,是否有可能以类似的方式创建其他类的对象。

例如,如果一个类有一个只调用一个整数的构造函数,那么说 Obj x = 2; 在语法上是正确的,因为它仍然以与字符串被写入。

最佳答案

String是一个特殊的final类,不能扩展。使用new关键字和文字创建字符串是不同的;

堆中有一个专门用于存放字符串的内存区域,叫做String Pool。当您创建一个字符串文字时,jvm 会搜索字符串池,如果它存在于该字符串所在的池中,如果与您创建的字符串不匹配,则将其添加到池中以及具有相同值地址的其他字符串对象也是。

如果您使用new 关键字创建一个字符串,则无论如何都确保该字符串是一个内存中的新对象

所以String是一种特殊的对象,不能与其他对象归为一类。

这是一篇文章

What is String Pool

关于java - 没有=newObj()可以实例化new对象吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47668098/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com