String中equals與==的差異?
- equals
比較物件裡的值(屬性)是否相同。
- ==
比較物件(實體、記憶體空間)是否相同。
舉例 :
String s1 = new String("restful") ;
String s2 = new String("restful") ;
String s3 = new String("peaceful") ;
String s4 = s1 ;
String s5= "restful" ;
String s6= "restful" ;
System.out.println(s1.equals(s2)) ;
System.out.println(s1.equals(s3)) ;
System.out.println(s1 == s2) ;
System.out.println(s1 == s4) ;
System.out.println(s1 == s5) ;
System.out.println(s5 == s6) ;
- s1.equals(s2)
s1和s2所帶的值相同。 true
- s1.equals(s3)
s1和s3所帶的值不相同。 false
- s1 == s2
s1和s2各new了不同的記憶體空間。 false
- s1 == s4
因為把s4指向了和s1所指向的同一個空間。 true
- s1 == s5
因為s1 new了一個新空間,而s5則在字串池中。 false
- s5 == s6
s5和s6都在字串池中,為了節省記憶體空間,在字串池中,只要值相同,都會指向同一個記憶體空間。 true