好的抱歉如果我正在複製,但我真的看過網站,似乎沒有發現類似於我的問題的東西。或者至少它是爲其他人工作,但不適合我。「null」String .equals(「null」)返回false java(JOptionPane)
我的主要問題是我使用JOptionPane,並將結果存儲在一個字符串中。當關閉按鈕被點擊時,存儲在字符串中的值爲「null」,正如我在控制檯中注意到的那樣。
String addedItemName = (String)addItemPane.showInputDialog(null,"Select item to add to basket","Add Item",JOptionPane.QUESTION_MESSAGE,null,items,"Select Item");
System.out.println("added item : " + addedItemName);
讓我這樣的結果在控制檯:
添加的項目:空
因此,我期待知道什麼時候被點擊了我的addedItemName比較字符串的關閉按鈕一個「空」字符串。 這似乎從來沒有工作,並相當挫折我,因爲我真的不明白。 以下是我爲了展示我如何嘗試每種不同方式而做出的一些其他測試,但它仍然無效。
String nullString = "null";
boolean test1 = Objects.equals(addedItemName, nullString);
boolean test2 = Objects.equals(nullString,addedItemName);
boolean test3 = nullString.equals(addedItemName);
boolean test4 = nullString.equalsIgnoreCase(addedItemName);
System.out.println(addedItemName);
System.out.println(nullString);
System.out.println(test1);
System.out.println(test2);
System.out.println(test3);
System.out.println(test4);
用以下控制檯輸出,當我點擊關閉按鈕:
空
空
假
假
假
假
所以基本上,控制檯顯示我的addedItemName爲「null」點擊關閉按鈕時,但是當我把它比作一個「空」的字符串,它在某種程度上永遠是平等的。
感謝任何人會告訴我我是多麼愚蠢,爲什麼它不適合愚蠢的原因。
(也有點問題,但不知道這是否是重要的:平等的測試,即使字符串中獲得的價值回報NullPointerException異常錯誤的那些行)
boolean test1 = addedItemName.equals(nullString);
boolean test2 = addedItemName.equalsIgnoreCase(nullString);
System.out.println(addedItemName);
System.out.println(nullString);
輸出:
空
null
線程「AWT-EventQueue-0」java.lang中的異常。NullPointerException異常
'null'和'「null」'是完全不同的...... –
null和「null」確實完全不同,但在我的情況下它只是「null」,因爲它們只是字符串而不是它們? @LouisWasserman –
你是什麼意思,「他們只是字符串」?你可以有一個空的字符串,而不是「null」。 –