检查Java中的字符串是否为空或者为空

时间:2020-01-09 10:34:54  来源:igfitidea点击:

要检查Java中的String是否为null或者为空,可以使用以下选项之一。

  • 从Java 6开始使用isEmpty()方法检查String是否为空。
  • 使用Apache Commons Lang的StringUtils.isEmpty()方法。
  • 从Java 11开始,还有isBlank()方法来检查String是否为空或者仅包含空格。

使用isEmpty()检查字符串为空还是为null

为了检查Java中String是否为空或者空,我们应该首先检查String是否为null,然后再检查它是否为空。如果使用或者条件(||),则如果第一部分本身为true,则不评估第二部分,因此,如果String本身为null,则不会在null字符串上调用isEmpty()方法。

例如

if(str == null || str.isEmpty())

如果String为null,则条件本身的第一部分评估为true,并且不检查第二部分。

public class StringEmpty {
  public static void main(String[] args) {
    String str1 = "A String";
    String str2 = "";
    // evaluates to false
    if(isNullOrEmpty(str1)) {
      System.out.println("String str1 is empty");
    }
    // evaluates to true
    if(isNullOrEmpty(str2)) {
      System.out.println("String str2 is empty");
    }	
		
    // evaluates to true
    if(isNotNullOrEmpty(str1)) {
      System.out.println("String str1 is not empty");
    }
    // evaluates to false
    if(isNotNullOrEmpty(str2)) {
      System.out.println("String str2 is not empty");
    }	
  }
	
  // Method returns true if String is null or empty
  private static boolean isNullOrEmpty(String str){
    if(str == null || str.isEmpty())
      return true;
    return false;
  }
	
  // Method returns true if String is not null or empty
  private static boolean isNotNullOrEmpty(String str){
    if(str != null && !str.isEmpty())
      return true;
    return false;
  }
}

输出:

String str2 is empty
String str1 is not empty

在示例中,给出了两个方法,如果String为null或者为空,则第一个返回true;而如果字符串非null且不为空,则第二个方法返回true。

Apache Commons Lang StringUtils.isEmpty()方法

在Apache Commons Lang的StringUtils实用程序类中,有一个isEmpty()方法来检查String是否为空。此方法还会检查null字符串,因此我们无需进行null检查。

public class StringEmpty {
  public static void main(String[] args) {
    String str1 = "A String";
    String str2 = null;
    if(StringUtils.isEmpty(str1)) {
      System.out.println("String str1 is empty");
    }		
    if(StringUtils.isEmpty(str2)) {
      System.out.println("String str2 is empty");
    }
  }
}

输出:

String str2 is empty

Java String isBlank()方法

Java 11及更高版本Java中的String类具有isBlank()方法,如果字符串为空或者仅包含空格,则返回true,否则返回false。

public class StringEmpty {
  public static void main(String[] args) {
    String str1 = "A String";
    String str2 = "   ";
    // evaluates to false
    if(isNullOrSpaces(str1)) {
      System.out.println("String str1 is empty or has spaces");
    }
    // evaluates to true
    if(isNullOrSpaces(str2)) {
      System.out.println("String str2 is empty or has spaces");
    }
  }
	
  // Method returns true if String is null or empty
  private static boolean isNullOrSpaces(String str){
    if(str == null || str.isBlank())
      return true;
    return false;
  }
}

输出:

String str2 is empty or has spaces

从isBlank()可以看到,它还检查String是否只有空格。