Java String型別如何判斷相等?

2021-08-28 22:13:43 字數 609 閱讀 9658

最初我寫的是:

輸入乙個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"))

{}

就能正確判斷了。

JAVA String字串判空

正確的寫法 equals str 或 str null str.equals str null str.isempty 錯誤的寫法 str.equals 原因 null不是物件,null沒有分配記憶體空間 null表示這個字串不指向任何的東西,那麼沒有是否為空的問題,因為引用的例項物件都沒有。這時候...

java String型別總結

總結昨天遇到的乙個string型別的知識 在記錄題目之前先補充幾個知識點 1.string a abc 與string b new string abc 此時的變數a b兩個物件不相等。a b不成立 但是 a.equal b 成立 並且無論a,b的定義位置如何,都不會影響到該結論 2.string ...

Java String型別資料的位元組長度

問題描述 向oracle資料庫中一varchar2 64 型別欄位中插入一條string型別資料,程式使用string.length 來進行資料的長度校驗,如果資料是純英文,沒有問題,但是如果資料中包含中文,校驗可以通過,但是在資料入庫時經常會報資料超長。問題分析 既然問題是資料超長,那麼問題應該就...