String特点
String变量每次修改其实都是产生并指向了新的字符串对象,原来的字符串对象都是没有改变的,所以称不可变字符串。
- 以" "方式给出的字符串对象,在字符串常量池中存储,而且相同内容只会在其中存储一份
- 以构造器new对象,每次new都会产生一个新的对象,放在堆内存中
String常见面试题
下面语句创建了几个对象
String s2 = new String("abc");
//2个 1.字符串常量池中"abc" 2.s2对象地址指向
String s3 = "abc"; //0个
s2 == s3 //false
------------------------------------------------------
String s1 = "abc";
String s2 = "ab";
String s3 = s2+"c";
s2 == s3 //false
-------------------------------------------------------
String s1 = "abc";
String s2 = "a"+"b"+"c";
s1 == s2 //true
//Java存在编译优化机制,程序编译时:"a"+"b"+"c" 会直接转化为“abc”
- subString 截取内容(包前不包后)
- 字符串很长,长度记得用 length()