当前位置: 首页 > 面试题库 >

如何检查我的字符串是否等于null?

白腾
2023-03-14
问题内容

仅当我的字符串具有有意义的值时,我才想执行一些操作。所以,我尝试了这个。

if (!myString.equals("")) {
doSomething
}

还有这个

if (!myString.equals(null)) {
doSomething
}

还有这个

if ( (!myString.equals("")) && (!myString.equals(null))) {
doSomething
}

还有这个

if ( (!myString.equals("")) && (myString!=null)) {
doSomething
}

还有这个

if ( myString.length()>0) {
doSomething
}

而且在所有情况下doSomething,尽管我的字符串为EMPTY,但我的程序仍然有效。等于null。那么,这有什么问题呢?

添加:

我找到了问题的原因。该变量被声明为字符串,结果,null分配给该变量的结果变为"null"!因此,if (!myString.equals("null"))作品。


问题答案:

如果myString实际上为null,则对引用的任何调用都将失败,并出现Null Pointer Exception(NPE)。从Java 6开始,请使用#isEmpty而不是长度检查(在任何情况下都不要创建带有检查的新空字符串)。

if (myString != null &&  !myString.isEmpty()){
    doSomething();
}

顺便说一句,如果像你那样与String文字进行比较,则会颠倒该语句,从而不必进行空检查,即,

if ("some string to check".equals(myString)){
  doSomething();
} 

代替 :

if (myString != null &&  myString.equals("some string to check")){
    doSomething();
}


 类似资料:
  • 问题内容: 这是我得到的: 但是该代码表示​​无法为该方法找到Symbol。我记得Java拥有这样的比较器…有什么建议吗? 问题答案: 是原始数据类型,因此可以与进行比较。 另外,通过使用双引号可以创建常量(),而使用单引号可以是常量()。

  • 问题内容: 我想检查我的字符串是否包含+字符。我尝试了以下代码 但是它没有给出预期的结果。 问题答案: 您需要此: 类的方法不使用正则表达式作为参数,而是使用普通文本。 编辑: 输出:

  • 问题内容: 我想测试输入的String是否平衡。如果有匹配的左,右括号,括号或花括号,则将是平衡的。 我在选择做什么时遇到问题。我是否应该将每个左括号或右括号,方括号或大括号放在堆栈中,然后弹出它们?如果我将它们弹出,那对我有什么帮助? 问题答案: 1)对于每个开口支架:将其推入堆栈。 2)对于每个右括号:从堆栈中弹出并检查括号的类型是否匹配。如果不退货; 即 String中的当前符号是,如果从堆

  • 我想测试输入字符串是否平衡。如果有一个匹配的开始和结束括号、括号或大括号,这将是平衡的。 我在选择做什么时遇到了问题。我是否应该将每个开始或结束的括号、括号或大括号放在一个堆栈中,然后将它们弹出?如果我把它们拿出来,这对我有什么帮助?

  • 问题内容: if var is ‘stringone’ or ‘stringtwo’: dosomething() 这行不通!我有一个变量,当它是两个值中的一个时,我需要它执行某些操作,但它不会输入if语句。在Java中工作。如何用Python编写? 问题答案: 这不能满足您的期望: 它与: 始终为真,因为它被认为是“真”值。 有两种选择: 或者您可以编写单独的相等性测试, 不要使用,因为比较对象

  • 问题内容: 我需要检查字符串是否包含数字。任何数字。字符串是否为数字,而不是数字,但包含一个数字。 例子: ‘test’=没有数字。 ‘test2’=包含数字。 问题答案: 使用正则表达式: 不使用正则表达式: