我该如何在Java中检查字符串是否为空?
stringname.equalsignorecase(null)
但是它没有起作用。
string == null
比较的是对象是否为null。 string.equals("foo")
比较的是对象内部的值。 string == "foo"
并不总是起作用,因为你试图查看的是对象是否相同,而不是它们所表示的值。
更长的回答:
如果你尝试这样做,它不起作用,就像你发现的一样:
String foo = null;
if (foo.equals(null)) {
// That fails every time.
}
原因是foo为空,所以它不知道什么是.equals; 没有对象可以从中调用.equals。
你可能想要的是:
String foo = null;
if (foo == null) {
// That will work.
}
处理字符串时,防止出现空指针的典型方法是:
String foo = null;
String bar = "Some string";
...
if (foo != null && foo.equals(bar)) {
// Do something here.
}
那样,如果foo是空的,它不会评估条件语句的第二部分,一切都好。String foo = null;
...
if ("some String".equals(foo)) {
// Do something here.
}
如果您想避免这个问题,Apache Commons提供了一个类 - StringUtils - 它提供了对空字符串的安全操作。
if (StringUtils.equals(foo, bar)) {
// Do something here.
}
另一个回答开玩笑地建议你这样做:
boolean isNull = false;
try {
stringname.equalsIgnoreCase(null);
} catch (NullPointerException npe) {
isNull = true;
}
请不要这样做。只有在出现异常错误时才应该抛出异常;如果您预期将得到null值,则应事先检查它,而不允许它抛出异常。s == null
不能工作?
equals()
。但是,如果你想检查一个变量是否为null
,你需要使用==
。 - Felix Kling当然可以工作。你错过了代码的一个关键部分。你只需要像这样做:
boolean isNull = false;
try {
stringname.equalsIgnoreCase(null);
} catch (NullPointerException npe) {
isNull = true;
}
;)
在 Android 开发中使用 TextUtils 方法。
TextUtils.isEmpty(str) : 如果字符串为 null 或长度为 0,则返回 true。 参数: str 要检查的字符串 返回值: 如果 str 为 null 或长度为零,则返回 true
if(TextUtils.isEmpty(str)) {
// str is null or lenght is 0
}
以下是此方法的源代码。您可以直接使用。
/**
* Returns true if the string is null or 0-length.
* @param str the string to be examined
* @return true if str is null or zero length
*/
public static boolean isEmpty(CharSequence str) {
if (str == null || str.length() == 0)
return true;
else
return false;
}
如果我们看一下equalsIgnoreCase方法的实现,我们会发现以下部分:
if (string == null || count != string.count) {
return false;
}
如果参数是null
,那么它将始终返回false
。这显然是正确的,因为唯一应该返回true
的情况是在一个null String
上调用equalsIgnoreCase,但是...
String nullString = null;
nullString.equalsIgnoreCase(null);
如果对象为空,调用equals方法肯定会导致NullPointerException异常。
因此,equals方法并不是为了测试对象是否为空而设计的,只是因为你不能在null
上调用它们。
这看起来有点奇怪,但是...
stringName == null || "".equals(stringName)
使用这种方式从未出现问题,而且这是一种安全的检查方式,避免了潜在的空指针异常。
我不确定The MYYN的回答有什么问题。
if (yourString != null) {
//do fun stuff with yourString here
}
上述的空指针检查是非常好的。
如果您想检查一个字符串引用是否等于(忽略大小写)另一个您知道不是空引用的字符串,那么可以像这样做:
String x = "this is not a null reference"
if (x.equalsIgnoreCase(yourStringReferenceThatMightBeNull) ) {
//do fun stuff
}
如果你对于你要比较的两个字符串是否存在空引用存在疑问,那么你需要至少在其中一个字符串上进行空引用检查,以避免可能发生的NullPointerException。
在你的类中导入它
import org.apache.commons.lang.StringUtils;
然后使用它,它们都将返回true。
System.out.println(StringUtils.isEmpty(""));
System.out.println(StringUtils.isEmpty(null));
简单方法:
public static boolean isBlank(String value) {
return (value == null || value.equals("") || value.equals("null") || value.trim().equals(""));
}
if(null == stringName){
[code]
}
else
[Error Msg]