Java中的字符串是对象,所以它应该是引用?
这个问题在这里已经有了答案:
该对象的引用被传递给该方法并被分配给该参数,该参数是一种局部变量。
为参数指定一个不同的对象引用对持有对原始对象的引用的方法以外的变量没有任何作用。
此外,String是不可变的,因此无法更改其值(例如setValue()
方法)。
行str = "welcome";
不会更改任何字符串的值 - 字符串永远不会更改它们的值。 它所做的是使一个参考点指向另一个字符串。 但它重新指定的引用是changeStr
的本地changeStr
,而不是main
声明的引用。
String是一个引用,但关键在于changeStr
中的String str
str
与main中的str
不同。 再加上这个事实:字符串在Java中是不可变的(这意味着当你改变字符串时,引用指向内存中的不同位置),这就解释了为什么main会打印1234