String str1 = "hello" ;
String str2 = "hello" ;
String str3 = "hello" ;
System.out.println(str1 == str2); // true
System.out.println(str1 == str3); // true
System.out.println(str2 == str3); //true
字面值常量字符串存在于常量池中
如果常量池中已经存在该字符串,直接引用;如果没有常量池当中没有,生成该字符串。
String str1 = new String("hello") ;
String str2 = "hello" ;
System.out.println(str1 == str2);
// 执行结果false
String str1 = new String("hello").intern() ;
String str2 = "hello" ;
System.out.println(str1 == str2);
// 执行结果
true
intern()如果字符串已存在于常量池,返回字符串的引用;
如果没有,在常量池当中生成该字符串的引用。
4.字符串的不可变性
String str = "hello" ;
str = str + " world" ;
str += "!!!" ;
System.out.println(str);
// 执行结果
hello world!!!
5.
String str1="abc";
String str=str1+new String( "def");
6.
String s1=new String("hel)+new String(“lo”);
s1.intern();// 获取一个字符串对象或者创建一个引用
String s2=new StingBulider().append().toString();
s2.intern();