Java String不可移植
在Java中,
字符串对象是不可变的。不可变只是表示不可修改或不可更改。
一旦创建了字符串对象,其数据或状态便无法更改,但创建了新的字符串对象。
让我们尝试理解不变性概念通过以下示例:
class Testimmutablestring{
public static void main(String args[]){
String s="Sachin";
s.concat(" Tendulkar");
System.out.println(s);
}
现在可以通过下面的图表来理解。此处Sachin不变,但使用sachintendulkar创建了一个新对象。这就是为什么字符串被称为不可变的原因。
如上图所示,两个对象是创建的,但是引用变量仍然引用" Sachin"而不是" Sachin Tendulkar"。
但是,如果我们明确地将其分配给引用变量,它将引用" Sachin Tendulkar"对象。例如:
class Testimmutablestring1{
public static void main(String args[]){
String s="Sachin";
s=s.concat(" Tendulkar");
System.out.println(s);
}
}
在这种情况下,s指向" Sachin Tendulkar"。请注意,尚sachin对象未修改。
为什么字符串对象在Java中是不可变的?
因为java使用字符串文字的概念。假设有5个引用变量,则全部引用一个对象" sachin"。如果一个引用变量更改了对象的值,它将影响所有引用变量。这就是为什么字符串对象在Java中是不可变的。