概述
String类代表字符串。java中所有的字符串字面值(如“abc”)都作为此类的实例实现。
String是一个final类,代表 不可变的字符序列
字符串是常量,用双引号引起来表示。它的值在创建之后,不能更改。
String对象的字符内容是存储在一个字符数组value[]中的
public static void main(String[] args) {
/**
* string被声明为final是不可以被继承的
* String 实现了 Serializable接口:表示字符串是支持序列化的
* String 实现了 Comparable接口:标识字符串是可以比较大小的
* String在内部定义了final的char[] value用来存储字符串
* String代表不可变的字符序列。简称:不可变的特性
* 体现: 当对字符串重新赋值时候,需要重新指定内存区域赋值,不能在原有的value进行赋值
* 对现有的字符串连接操作时,也不能在原有的value上赋值,需要重新指定内存区域
* 当调用String的replace方法时,修改字符或者修改字符串时,也必须重新指定内存区域进行复制
* 通过字面量的方式(区别于new)给一个字符串赋值,此时的字符串值声明在字符串常量池中
* 字符串常量池中是不会存储相同内容的字符串的
*/
String name1 = "小刘"; //字面量
String name2 = "小刘";
System.out.println(name1 == name2); //比较name1和name2的地址值 //true
name1 = "aaaa";
System.out.println(name1); // aaaa
System.out.println(name2); // 小刘
System.out.println("======================");
String name3 = "abc";
name3 += "def";
System.out.println(name3);
System.out.println("======================");
String name4 = "abc";
String name5 = name4.replace("a", "m");
System.out.println(name5); //mbc
}
String对象的创建
// String对象的创建
String str = "hello";
// 本质上 this.value = new char[0];
String s1 = new String();
// this.value = proginal.value
String s2 = new String(String Original);
// this.value = Arrays.copy(value,value.length)
String s3 = new String(char[] a);
//
String s4 = new String(char[] a, int startIndex, int count);