如何检查在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 ,它遵循两种可能的条件:

  1. stringname有一个非空的string值(比如“computer”):
    你的代码会正常工作,因为它采取的forms
    "computer".equalsignorecase(null)
    你会得到预期的回应为false
  2. 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 == nullstring.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 ..