我是.net程序员,在java中是全新的。我在处理java中的空字符串时遇到问题。我将字符串数组中的值赋给字符串变量completeddate。 我尝试了所有这些但是没有用。
String COMPLETEDATE;
COMPLETEDATE = country[23];
if(country[23] == null && country[23].length() == 0)
{
// ...
}
if (COMPLETEDATE.equals("null"))
{
// ...
}
if(COMPLETEDATE== null)
{
// ...
}
if(COMPLETEDATE == null || COMPLETEDATE.equals("null"))
{
// ...
}
答案 0 :(得分:3)
对于初学者......将String
与潜在null
值进行比较的最安全方法是先保证保证非空String
,然后调用.equals
在那:
if("constantString".equals(COMPLETEDDATE)) {
// logic
}
但总的来说,你的做法并不正确。
正如我评论的那样,第一个将始终生成一个NullPointerException
,它是否经过country[23] == null
评估。如果是null
,则它没有.length
属性。您可能打算转而致电country[23] != null
。
第二种方法只将它与文字字符串"null"
进行比较,鉴于程序的范围,它可能是也可能不是。此外,如果COMPLETEDDATE
本身为空,它将失败 - 在这种情况下,您将按照我的描述纠正它。
你的第三种方法是正确的,因为它是唯一检查null
的方法。通常情况下,如果你想要的对象不是 null
,你会想要做一些逻辑。
你的第四种方法是偶然的;如果COMPLETEDDATE
实际上是null
,OR
将会短路。如果COMPLETEDDATE
等于文字"null"
,也可能是真的。
答案 1 :(得分:0)
您所询问的内容并不完全清楚,但要检查String变量是否为null,请使用以下语句。
if(myString==null)
检查对象引用是否为空。
由于以下两个原因,您撰写的以下声明不正确。
if (COMPLETEDATE.equals("null"))
{
// ...
}
1。 null
是Java中的关键字,"null"
只是一串文字。
2. .equals()
根据给定方法的相等定义检查两个对象是否相等。应始终使用==比较运算符进行空检查,因为它检查引用相等性。
答案 2 :(得分:0)
如果变量为null,则不能取消引用它。
这意味着您无法在其上调用方法。
所以......每次第一个子句为真时,以下if语句都会抛出NullPointerException:
if (a == null && a.length() == 0)
换句话说:如果a
为空,则不能调用a
上的长度方法。
答案 3 :(得分:0)
要检查空字符串,您可以在Java 8中使用可选,如下所示: import可选
import java.util.Optional;
按上述方式导入
String str= null;
Optional<String> str2 = Optional.ofNullable(str);
然后使用 isPresent(),如果str2包含NULL则返回false,否则返回true
if(str2.isPresent())
{
//If No NULL
}
else
{
//If NULL
}
参考:https://docs.oracle.com/javase/8/docs/api/java/util/Optional.html