三、 == 内存地址比对
String str1 = "abc";
String str2 = "abc";
System.out.println(str1==str2); //true str1和str2同时指向 栈内存 中同一个内存空间
String str3 = "abc";
String str4 = new String("abc") ;
System.out.println(str3 == str4); //flase str3值在栈内存中,str4值在堆内存中
String hello = "hello" ;
String hel = "hel" ;
String lo = "lo" ;
System.out.println(hello == "hel" + "lo") ; //true
//两个常量相加,先检测栈内存中是否有hello如有有,指向已有的栈中的hello空间
System.out.println(hello == "hel" + lo) ; //flase
System.out.println(hello == hel + lo) ; //flase
//lo是在常量池中,不检查栈内存,在堆中产生一个新的hello
四、 equals 值进行比对
public boolean equals(Object anObject)
将此字符串与指定的对象比较。当且仅当该参数不为 null,并且是与此对象表示相同字符序列的 String 对象时,结果才为 true。
String str5 = "abc";
String str6 = new String("abc") ;
System.out.println(str5.equals(str6)); //true str5的值str6的值比对