String s1 = "hello";
String s2 = "hello";
String s3 = new String("hello");
s1 += “world”;
注意:这里 s1 += “world”; 相当于 s1 = s1 + “world”; ,有变量参与。
- 当对字符串重新赋值时,需要重写指定内存区域赋值,不能使用原有的value进行赋值。当对现有的字符串进行连接操作,也需要重新指定内存区域,不能使用原有的value进行赋值。当调用String的 replace() 方法修改指定字符或字符串时,也需要重新指定内存区域。
声明为 final,不可继承。
4. String s = new String(“hello”);在内存中创建了几个对象?请说明2个,堆空间一个,常量池一个。
5. String,StringBuffer,StringBuilder三者的对比String(JDK1.0):不可变字符序列,底层使用char[]存储
StringBuffer(JDK1.0):可变字符序列、效率低、线程安全,底层使用char[]存储(可扩容)
StringBuilder(JDK 5.0):可变字符序列、效率高、线程不安全,底层使用char[]存储(可扩容)
length() / charAt() / equals() / compareTo() / startsWith() / endsWith()
containts() / indexOf() / lastIndexOf() / getBytes() / toCharArray() / valueOf() / ….



