String是java中的一个类。在声明和分配字符串时,正确地说 String name =“Paul” 虽然要从java类实例化一个对象,我们会做 String name = new String(); 将name作为对象,我想知道为什么我们可以为对象分配一系列字符“Paul”。根据这个概念的作用是什么,它是如何工作的?
答案 0 :(得分:6)
在Java代码中
"Paul"
是字符串文字和
String name
String
类型的变量,名称为name.
Java Language Specifications, section 3.10.5州:
字符串文字始终为
类型String
由于123
是int
字面值而int number
是int
类型的变量,名称为number
,因此以下两种陈述都是合法的,因为在作业匹配的左侧和右侧键入:
int number = 123;
String name = "Paul";
答案 1 :(得分:5)
那是因为隐式字符串 - "..."
也被视为对象。
在封面下,JVM在所谓的String pool
中查找类似的“对象”,然后如果它在那里找到它,则返回该对象(而不是创建新对象),否则创建新对象并将其放入String池。
这是为了提高内存效率,而“Paul”所以新的String(“Paul”)不一样。
这是可能的,因为我们知道,字符串在Java中是不可变的。
您可以阅读有关此行为的更多信息,请搜索关键字“字符串池”。