"null" String .equals("null") return false java (JOptionPane)
"null" String .equals("null") return 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);
在控制台中得到这个结果:
added item : null
因此,我希望通过将我的 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);
当我单击关闭按钮时,控制台输出如下:
null
null
false
false
false
false
所以基本上,当单击关闭按钮时,控制台向我显示 addedItemName 为“null”,但是当我将它与“null”字符串进行比较时,它永远不会相等。
感谢任何能告诉我我实际上有多愚蠢以及为什么它出于愚蠢的简单原因不起作用的人。
(也是小问题,但不知道它是否重要:即使字符串获得值,那些相等性测试行 return nullPointerException 错误)
boolean test1 = addedItemName.equals(nullString);
boolean test2 = addedItemName.equalsIgnoreCase(nullString);
System.out.println(addedItemName);
System.out.println(nullString);
输出:
null
null
Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException
空字符串必须是:
String nullString = null;
原因 'null' 表示未引用对象(请记住 java 中的所有内容都是对象)
String nullString = "null";
是对包含字母 null 的字符串的有效引用
你的输出有点混乱,因为
System.out.println("added item : " + null);
生成您看到的输出。这就是字符串连接的原因:
https://docs.oracle.com/javase/specs/jls/se8/html/jls-5.html#jls-5.1.11
...Now only reference values need to be considered. If the reference
is null, it is converted to the string "null" (four ASCII characters
n, u, l, l). Otherwise, the conversion is performed as if by an
invocation of the toString method of the referenced object with no
arguments; but if the result of invoking the toString method is null,
then the string "null" is used instead.
好的,对不起,如果我正在复制,但我真的浏览了该网站,似乎没有找到与我的问题类似的东西。或者至少它对其他人有效,但对我无效。
我的主要问题是我使用了 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);
在控制台中得到这个结果:
added item : null
因此,我希望通过将我的 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);
当我单击关闭按钮时,控制台输出如下:
null
null
false
false
false
false
所以基本上,当单击关闭按钮时,控制台向我显示 addedItemName 为“null”,但是当我将它与“null”字符串进行比较时,它永远不会相等。
感谢任何能告诉我我实际上有多愚蠢以及为什么它出于愚蠢的简单原因不起作用的人。
(也是小问题,但不知道它是否重要:即使字符串获得值,那些相等性测试行 return nullPointerException 错误)
boolean test1 = addedItemName.equals(nullString);
boolean test2 = addedItemName.equalsIgnoreCase(nullString);
System.out.println(addedItemName);
System.out.println(nullString);
输出:
null
null
Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException
空字符串必须是:
String nullString = null;
原因 'null' 表示未引用对象(请记住 java 中的所有内容都是对象)
String nullString = "null";
是对包含字母 null 的字符串的有效引用 你的输出有点混乱,因为
System.out.println("added item : " + null);
生成您看到的输出。这就是字符串连接的原因:
https://docs.oracle.com/javase/specs/jls/se8/html/jls-5.html#jls-5.1.11
...Now only reference values need to be considered. If the reference is null, it is converted to the string "null" (four ASCII characters n, u, l, l). Otherwise, the conversion is performed as if by an invocation of the toString method of the referenced object with no arguments; but if the result of invoking the toString method is null, then the string "null" is used instead.