- String是Java定义好的一个类。定义在java.lang包中,使用的时候不需要导包
- Java程序中的所有字符串文字都是此类的对象
- 字符串不可变,它们的值在创建后不能被更改
String的注意点
字符串的内容是不可变的,它的对象在创建后不能被更改
String name1 = "abc";
String name2 = "def";
name3 = name1 + name2;
name3是字符串拼接产生的一个新的字符串abcdef,name2和name3的值没有被修改
即使是赋值
String name1 = "abc";
name1 = "def";
abc并没有被修改,而是创建了一个新的字符串"def"并赋值给了变量name1
直接赋值和创建String对象的区别
直接赋值的内存结构:
双引号直接赋值的时候,会检查串池
- 不存在:创建新的
- 存在:复用
比如:
String s1 = "abc";
String s2 = "abc";
s1和s2都指向串池中同一块"abc"的内存空间
创建String对象的内存结构
每次都会创建一个新的字符串对象
比如:
String s1 = new String("abc");
String s2 = new String("abc");
s1和s2指向的abc分别在两个不同的内存空间中
因此我们通常采用直接赋值的方式,相比于创建String对象,直接赋值更加节省内存空间
