如何检查在Java中的空string?
我怎样才能检查一个string在Java中的null? 我在用
stringname.equalsignorecase(null)
但它不工作。
string == null
比较对象是否为空。 string.equals("foo")
比较该对象内部的值。 string == "foo"
并不总是工作,因为你想看看对象是否相同,而不是他们代表的值。
较长的答案:
如果您尝试这样做,那么您将发现:
String foo = null; if (foo.equals(null)) { // That fails every time. }
原因是foo为null,所以不知道.equals是什么; 那里没有任何东西可以叫.equals。
你可能想要的是:
String foo = null; if (foo == null) { // That will work. }
处理string时,防止出现null的典型方法是:
String foo = null; String bar = "Some string"; ... if (foo != null && foo.equals(bar)) { // Do something here. }
这样,如果foo为空,它不会评估条件的后半部分,事情都是正确的。
简单的方法,如果你使用一个string文字(而不是一个variables),是:
String foo = null; ... if ("some String".equals(foo)) { // Do something here. }
如果你想解决这个问题,Apache Commons有一个类–StringUtils – 它提供了无效的string操作。
if (StringUtils.equals(foo, bar)) { // Do something here. }
另一个回应是开玩笑说,你应该这样做:
boolean isNull = false; try { stringname.equalsIgnoreCase(null); } catch (NullPointerException npe) { isNull = true; }
请不要这样做。 你应该只抛出exception的例外, 如果你期望一个null,你应该提前检查一下,不要让它抛出exception。
在我的脑海里,有两个原因。 首先,例外是缓慢的; 检查null是快速的,但是当JVM抛出一个exception时,需要很多时间。 其次,如果你提前检查空指针,代码更容易阅读和维护。
s == null
不会工作?
当然,它的作品。 你错过了代码的重要部分。 你只需要这样做:
boolean isNull = false; try { stringname.equalsIgnoreCase(null); } catch (NullPointerException npe) { isNull = true; }
;)
如果我们看一下equalsIgnoreCase方法的实现,我们可以find这个部分:
if (string == null || count != string.count) { return false; }
所以如果参数为null
它总是返回false
。 这显然是正确的,因为它应该返回true
的唯一情况是equalsIgnoreCase在null String
上被调用,但
String nullString = null; nullString.equalsIgnoreCase(null);
肯定会导致NullPointerException。
所以equals方法不是用来testing一个对象是否为null,只是因为你不能在null
上调用它们。
使用TextUtils方法。
TextUtils.isEmpty(str) :如果string为null或长度为0,则返回true。 参数:str要检查的string返回:如果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; }
这看起来有点奇怪,但是…
stringName == null || "".equals(stringName)
从来没有这样做的问题,再加上这是一个更安全的方法来检查,同时避免潜在的零点例外。
我不确定MYYN的答案有什么问题。
if (yourString != null) { //do fun stuff with yourString here }
上面的空检查是相当好的。
如果你正在试图检查一个String引用是否相等(忽略大小写)到另一个你知道不是空引用的string,那么就像这样做:
String x = "this is not a null reference" if (x.equalsIgnoreCase(yourStringReferenceThatMightBeNull) ) { //do fun stuff }
如果您对两个正在比较的string是否有空引用存在疑问,则需要至less检查一个空引用,以避免发生NullPointerExceptionexception。
如果你的string有“null”值,那么你可以使用
if(null == stringName){ [code] } else [Error Msg]
你可以用String == null来检查
这对我有用
String foo = null; if(foo == null){ System.out.println("String is null"); }
当然user351809, stringname.equalsignorecase(null)
会抛出NullPointerException。
看,你有一个string对象stringstringname
,它遵循两种可能的条件:
-
stringname
有一个非空的string值(比如“computer”):
你的代码会正常工作,因为它采取的forms
"computer".equalsignorecase(null)
你会得到预期的回应为false
。 -
stringname
有一个null
值:
这里你的代码会卡住,如
null.equalsignorecase(null)
然而,首先看起来不错,你可能希望答案是true
,
但是,null
不是可以执行equalsignorecase()
方法的对象。
因此,由于情况2你会得到例外。
我build议你只是简单地使用stringname == null
如果返回值为空,请使用:
if(value.isEmpty());
有时要检查null, if(value == null)
在java中,即使String为null也可能不成立。
我意识到这是很久以前的答案,但我没有看到这张贴,所以我想我会分享我的工作。 这对于代码可读性来说并不是特别好,但是如果你不得不做一系列的空检查,我喜欢使用:
String someString = someObject.getProperty() == null ? "" : someObject.getProperty().trim();
在这个例子中,trim被调用的string,如果string为null或空格,将会抛出一个NPE,但是在同一行,你可以检查null或空白,所以你不会结束一吨(更多)难以格式化,如果块。
将它导入你的class级
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("")); }
那么,上次有人问这个愚蠢的问题,答案是:
someString.equals("null")
虽然这个“修复”只隐藏了一个更大的问题,即null
如何变成"null"
。
有两种方法来做到这一点..Say String == null或string.equals() ..
public class IfElse { public int ifElseTesting(String a){ //return null; return (a== null)? 0: a.length(); } } public class ShortCutifElseTesting { public static void main(String[] args) { Scanner scanner=new Scanner(System.in); System.out.println("enter the string please:"); String a=scanner.nextLine(); /* if (a.equals(null)){ System.out.println("you are not correct"); } else if(a.equals("bangladesh")){ System.out.println("you are right"); } else System.out.println("succesful tested"); */ IfElse ie=new IfElse(); int result=ie.ifElseTesting(a); System.out.println(result); } }
检查这个例子..这里是另一个例子的快捷版本的If Else ..