java中String的不变性
JVM专门用一片特殊的存储区域存储String,面对String常量,会检查String常量池中是否存在此常量,如果存在的话,直接进行引用,避浪费多余的内存空间,因此必须确保这个具体的常量不能变,这就是我们经常讲的String的不变性 。
-
字符串创建后不能改变
String str = "abc"; str += "A"; System.out.println(str); // "abcA" // str从指向"abc",到指向"abcA";产生了"abc"、"A"、"abcA" 三个字符串对象
-
由于String的不可变性,String可以被共享
String str0 = "A"; String str1 = "A"; System.out.println(str0 == str1); // true // 只产生了"A"一个字符串对象,str0、str1共享
-
String 与 char[]
String str = "1234"; // 相当于 char[] data = {'1', '2', '3', '4'}; String str = new String(data); // String底层是靠字符数组实现的
本文来自博客园,作者:遥远的相似性,转载请注明原文链接:https://www.cnblogs.com/z212021/p/13871759.html