【发布时间】:2016-01-19 17:26:44
【问题描述】:
在以下代码段中创建了多少不同的String 对象实例?
String s1 = new String("hello");
String s2 = "GoodBye";
String s3 = s1;
不确定我在这里的所有推理。
通过使用从String 类创建实例的关键字new,我猜它必须是一个对象。但是,我很困惑,new 之后的 String 现在是否被视为一种方法,因为它具有 ( ) 然后它在其中调用 String 文字“hello”?
String s2 = "Goodbye";
我认为这是一个字符串文字,因为字符串实际上是对象,所以字符串文字也被认为是对象。 不是 100% 确定这是不是真的。
String s3 = s1; 只是指回 s1。因此,它并不明显。
所以我的答案是 2 个不同的对象。
请解释我是对还是错。
【问题讨论】:
-
@YassinHajaj 不会是 3 个对象吗?字符串池中的两个(文字)和构造函数创建的另一个。
-
@YassinHajaj “字符串池中的一个” 哪个?由于他有两个文字,因此必须有人决定。
-
我认为这只是一个基本的新手问题汤姆。当您说构造函数时,您的意思是“新的”,对吗?那是构造函数?字符串池是存储字符串内存的地方。我知道堆属于所有对象,那么字符串池是否是特定于字符串的堆的一部分?
-
感谢科学。如果 "" 不在池中,不知道 new String("") 创建了两个对象。