public class TestStringEquals {
public static void main(String[] args) {
String a="wang";
String b="wang";
System.out.println(a==b);
System.out.println(a.equals( b ));
System.out.println("---------------------");
String c=new String("wang");
System.out.println(a==c);
System.out.println(a.equals( c ));
}
}
結果爲
true
true
---------------------
false
true
https://www.cnblogs.com/dolphin0520/p/3592500.html
雖然裏面說了==與equals的區別,但沒有說清楚這種a爲什麼等於b。
似乎直接賦值時是作爲基本數據類型來看待(具體方法待查),而再new的時候則是創建的一個對象(?)。
再舉一例:
public class TestUpperLower {
public static void main(String[] args) {
Scanner input =new Scanner( System.in );
String uname,pwd;
System.out.println("請輸入用戶名:");
uname=input.next();
System.out.println("請輸入密碼:");
pwd=input.next();
/*if(uname=="TOM"&&pwd=="1234567"){
System.out.println("登陸成功");
}else{
System.out.println("用戶名或密碼不正確");
}*/
if(uname.equals( "TOM" )&&pwd.equals( "1234567" )){
System.out.println("登陸成功");
}else{
System.out.println("用戶名或密碼不正確");
}
}
}
使用==號時,顯示用戶或者密碼不正確。
使用equals時,登陸成功。
在判斷String是否相等時最好還是用equals。
———————————————————————
注意
equals比的是值
==比的是地址