我刚刚开始使用Java。但是当我进入第一章时,我有一个很大的难题。
它说我们在创建句柄时必须“初始化”句柄,例如String s = "asdf"
,之后它说我们再次为字符串s
String s = new String("asdf");
创建一个新对象。
我认为字符串s
在“初始化”中已经有了一个对象(asdf),但为什么我们仍然需要重新创建它(如果我理解正确的话)?
希望有人可以向我解释这一点,在书中它只是被跳过了。
答案 0 :(得分:2)
String str1 = "asdf"; //This is a String literal
String str1 = new String("asdf"); //This is a String object
String 对象位于堆上,而文字位于公共池上,用于字符串文字。
Noe如果您执行String s = "asdf";
然后String s = new String("asdf");
,则会因重新声明s
而收到编译错误。
有关详细信息,请参阅JLS。