Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/oop/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
String 为什么字符串对象在Java中是不可变的?_String_Oop_Object - Fatal编程技术网

String 为什么字符串对象在Java中是不可变的?

String 为什么字符串对象在Java中是不可变的?,string,oop,object,String,Oop,Object,我是java编程新手。我不明白为什么字符串对象在java中是不可变的 String a = "Vehicle"; 因为java使用了字符串文本的概念。假设有五个参考变量,所有参考变量都指向一个对象“Vehicle”。如果一个参考变量改变了对象的值,它将影响所有参考变量。这就是为什么字符串对象在java中是不可变的。这就是原因之一。如果存在“只读”字符串,或对文本进行写时复制等是可行的。字符串不可变还有其他原因。出于安全考虑,这是一种设计选择:如果我持有对java.lang.String对象的引

我是java编程新手。我不明白为什么字符串对象在java中是不可变的

String a = "Vehicle";

因为java使用了字符串文本的概念。假设有五个参考变量,所有参考变量都指向一个对象
“Vehicle”
。如果一个参考变量改变了对象的值,它将影响所有参考变量。这就是为什么字符串对象在java中是不可变的。

这就是原因之一。如果存在“只读”字符串,或对文本进行写时复制等是可行的。字符串不可变还有其他原因。出于安全考虑,这是一种设计选择:如果我持有对
java.lang.String
对象的引用,我肯定没有其他进程会更改其内容。我是否应该公布此答案的所有原因。我发布了我所知道的答案。我相信我为他/她的问题贴出了正确的答案@JonSkeetAs我之前说过,Java被设计成一种不同的方式是完全合理的——能够汇集文本是使用不可变字符串的一个效率优势,但是如果不可变性对于字符串来说通常是一个坏主意,我们就不会这样做。字符串不可变有更好的理由。你想说虽然
String
对象是不可变的,但我们如何实现
String a=“Vehicle”;a=“新”+a
String a = "Vehicle";