Java判断字符串为空的几种方式

判断字符串为空的方式

非空和非null

在了解常见的判断方法之前, 先要理解非空和非null的概念:

  • 非空(non-empty)指的是对象或容器(字符串,集合,数组等)中包含了有效的元素或数据. 对于字符串来说, 非空意味着字符串至少有一个字符, 对于集合或数组来说, 非空意味着其中至少有一个元素. 例如"hello"是一个非空字符串, [1,2,3]是一个非空的整数数组.
  • 非null(non-null)是一个更广泛的概念, 它指的是对象引用不为null. 如果一个对象引用为null, 意味着它没有指向任何有效的对象, "非null"就是指对象引用不是null, 它指向了一个有效的对象或实例.

两者的区别:

  • 非空(non-empty)是针对容器中是否包含有效元素或数据的状态.
  • 非null(non-null)是针对对象引用是否指向有效对象的状态.

判断方式

手动判断, 与之类似的还有org.apache.commons.lang包中的isEmpty()方法:

if(str.length == 0 && str == null);

isEmpty()方法源码:

public static boolean isEmpty(String str) {
    return str == null || str.length() == 0;
}

使用String类自带的isEmpty()方法, 当字符串长度为0时返回ture, 否则返回false

if(str.isEmpty());

使用equals()方法检测字符串是否与空字符串相等, 如果字符串为空串返回true, 否则返回false

if(str.equals(""));

使用trim()方法去除字符串首尾的空白字符, 然后再检查字符串是否为空

if(str.trim().isEmpty());

使用JDK11的新方法isBlank(), 该方法用于检测字符串是否为空或只包含空格字符, 它会将全角空格,制表符也视为空格.

isBlank()方法简化版源码:

public final class String {
    public boolean isBlank(String str) {
        int strLen = str.length();
        byte[] bytes = str.getBytes();
        for (int i = 0; i < strLen; i++) {
            if (!Character.isWhitespace(bytes[i])) {
                return false;
            }
        }
        return true;
    }
}

isBlank()方法的使用:

if(str != null && !str.isBlank());

使用org.apache.commons.lang包中的StringUtils.isNotBlank()方法, 该方法同时判断了字符串是否为空, 是否为null, 是否包含空格等情况

StringUtils.isNotBlank()方法源码:

public static boolean isBlank(String str) {
    int strLen;
    if (str != null && (strLen = str.length()) != 0) {
        for(int i = 0; i < strLen; ++i) {
            if (!Character.isWhitespace(str.charAt(i))) {
                return false;
            }
        }

        return true;
    } else {
        return true;
    }
}

StringUtils.isNotBlank()方法使用:

if(StringUtils.isNotBlank(str));

注意: 以上的方法中除了org.apache.commons.lang包中的isNotBlank()isEmpty()方法, 其他方法在字符串为null时都会抛出空指针异常(NullPointerException).

posted @ 2023-08-02 14:12  Ahci  阅读(2617)  评论(0编辑  收藏  举报