为什么Java允许将字符串文本分配给字符串对象?
String是java中的一个类。在声明和分配字符串时,正确的说法是string name=“Paul”,但要从java类实例化一个对象,我们需要string name=new string()把名字作为一个对象,我想知道为什么我们可以给这个对象分配一系列字符“保罗”。这是在什么概念下工作的,它是如何工作的
你可以在下面搜索框中键入要查询的问题!
String是java中的一个类。在声明和分配字符串时,正确的说法是string name=“Paul”,但要从java类实例化一个对象,我们需要string name=new string()把名字作为一个对象,我想知道为什么我们可以给这个对象分配一系列字符“保罗”。这是在什么概念下工作的,它是如何工作的
# 1 楼答案
这是因为隐式字符串-
"..."
也被视为对象在封面下,JVM在所谓的
String pool
中寻找类似的“对象”,然后如果在那里找到它,它将返回该对象(而不是创建新对象),否则将创建新对象并将其放入字符串池这是为了提高内存效率,所以新字符串(“Paul”)不一样
这是可能的,因为我们知道,字符串在Java中是不可变的
你可以阅读更多关于搜索关键字“字符串池”的行为
# 2 楼答案
在Java代码中
是字符串文字和
类型为
String
的变量,名称为name.
该Java Language Specifications, section 3.10.5声明:
由于
123
是int
文字,而int number
是int
类型的变量,名为number
,以下两条语句都是合法的,因为赋值的左侧和右侧的类型匹配: