① 字符串 String 类型本身是 final 修饰的,意味着我们不能继承 String。
② 字符串的对象也是不可变对象,意味着一旦进行修改,就会产生新的对象。
注意:如果程序中涉及到了大量的字符串的修改操作,那么此时的内存消耗比较高,可能需要考虑使用 StringBuilder 或 StringBuffer 的可变字符序列。
③ String 对象内部是用字符数组保存的。
JDK 9 之前是用 char[] 数组保存的,JDK 9 之后时用 byte[] 数组保存的。
例如:下面的代码是等价的:
String str = "abc";
char[] chs= {'a','b','c'};
String str = new String(chs);
String s1 = "abc";
String s2 = "abc";
System.out.println(s1 == s2); //true
// 内存中只有一个"abc"对象被创建,同时被s1和s2所共享