Java 之 String 类
一、String 类的理解
1、类的声明
public final class String implements java.io.Serializable, Comparable<String>, CharSequence {
final:String 是不可以被继承的; Serializable:可序列化的接口,凡是实现此接口的类的对象就可以通过网络或者本地流进行数据的传输。 Comparable:凡是实现此接口的类,其对象都可以比较大小。
2、内部声明的属性
private final char value[];
存储字符串数据的容器
final:指明此 value 数组一旦初始化,其地址就不可变
3、字符串常量的存储位置
字符串常量都存储在字符串常量池(StringTable)中 字符串常量池不允许存放两个相同的字符串常量 字符串常量池在不同的 jdk 版本中,存放的位置不同
4、字符串的不可变性的理解
- 当对字符串变量重新赋值时,需要重新指定一个字符串常量的位置进行赋值,不能在原来的位置修改
- 对现有的字符串进行拼接操作时,需要重新开辟空间保存新的字符串
- 当调用字符串的 replace 方法替换现有的某个字符时,需要重新开辟空间保存修改以后的字符串,不能原地修改
public class StringDemo {
public static void main(String[] args) {
StringDemo s = new StringDemo();
s.test2();
s.test3();
}
// String 的不可变性
// 当对字符串变量重新赋值时,需要重新指定一个字符串常量的位置进行赋值,不能在原来的位置修改
// 对现有的字符串进行拼接操作时,需要重新开辟空间保存新的字符串
// 当调用字符串的 replace 方法替换现有的某个字符时,需要重新开辟空间保存修改以后的字符串,不能原地修改
public void test2() {
;
;
s2 = ;
s2 += ;
System.out.println(s1);
System.out.println(s1);
}
{
;
;
s2.replace(, );
System.out.println(s1);
System.out.println(s2);
System.out.println(s3);
}
}


