==号比較引用類型比較的是位址值是否相同
equals:比較引用類型預設也是比較位址值是否相同,而String類重寫了equals()方法,比較的是内容是否相同。
package name;
public class Text02 {
public static void main(String[] args) {
String s1="hello";
String s2="word";
String s3="helloword";
System.out.println(s3==s1+s2);
System.out.println(s3.equals(s1+s2));
System.out.println(s3=="hello"+"word");
System.out.println(s3.equals("hello"+"word"));
}
}
運作結果為
false
true
true
true
字元串如果是變量相加,先開空間,再拼接,System.out.println(s3= =s1+s2);中s1s2是變量,開空間再比較位址值自然不同。
字元串如果是常量相加,是先加,然後在常量池找,如果有就直接傳回,否則,就建立。System.out.println(s3==“hello”+“word”);helloword是常量。