1. 程式人生 > >Java String型別如何判斷相等?

Java String型別如何判斷相等?

最初我寫的是:

輸入一個String類的變數,如果它既不是A 也不是B,那就報錯,重新輸入。

我寫的程式碼是

Scanner sc=new Scanner(System.in);
System.out.print("請輸入種類(A或B):");
String type=sc.next();
if(type!="A"&&type!="B")
{
}
if(type=="A"||type=="B")
{
}

發現無論輸入A還是B,它都不能正確的判斷。

百度之後,方才明白:

equals()比較的是物件的內容(區分字母的大小寫格式),equalsignorecase()是不區分大小寫比較。但是如果使用“==”比較兩個物件時,比較的是兩個物件的記憶體地址,所以不相等。即使它們內容相等,但是不同物件的記憶體地址也是不相同的。

更改為:

if(!type.equals("A")&&!type.equals("B"))
{}

if(type.equals("A")||type.equals("B"))
{}

就能正確判斷了。