在Java中, 字符串对象是不可变的。不可变只是意味着不可更改或不可更改。
创建字符串对象后, 其数据或状态便无法更改, 但会创建一个新的字符串对象。
让我们尝试通过以下示例了解不变性概念:
class Testimmutablestring{
public static void main(String args[]){
String s="Sachin";
s.concat(" Tendulkar");
//concat() method appends the string at the end
System.out.println(s);
//will print Sachin because strings are immutable objects
}
}
立即测试
Output:Sachin
现在可以通过下面给出的图表来理解。此处Sachin不变, 但是使用sachintendulkar创建了一个新对象。这就是为什么字符串被称为不可变的原因。
文章图片
如你在上图中所看到的, 创建了两个对象, 但是引用变量仍然引用“ Sachin”而不是“ Sachin Tendulkar”。
【Java中的不可变字符串】但是, 如果我们明确地将其分配给引用变量, 它将引用“ Sachin Tendulkar”对象。例如:
class Testimmutablestring1{
public static void main(String args[]){
String s="Sachin";
s=s.concat(" Tendulkar");
System.out.println(s);
}
}
立即测试
Output:Sachin Tendulkar
在这种情况下, s指向“ Sachin Tendulkar”。请注意, 尚sachin对象未修改。
为什么字符串对象在Java中是不可变的?
由于java使用字符串文字的概念。假设有5个引用变量, 则全部引用一个对象“ sachin”。如果一个引用变量更改了该对象的值, 它将影响所有引用变量。这就是为什么字符串对象在Java中是不可变的。 |
推荐阅读
- Win10系统管理员权限设置办法
- Java Shell工具(JShell)
- 如何创建不可变类()
- StringBuffer和StringBuilder之间的区别
- String和StringBuffer之间的区别
- Java可变参数(变量)
- Java静态导入
- Java的新功能介绍
- Java通用实例创建的类型推断