【问题标题】:Difference between isEmpty() and isBlank() Method in java 11java 11中isEmpty()和isBlank()方法的区别
【发布时间】:2018-12-20 07:12:30
【问题描述】:

Java 11java.lang.String 类添加了一个新的实例方法 isBlank()

现有的isEmpty 和新增的isBlank() 方法的基本区别是什么?

【问题讨论】:

  • 投了反对票,因为这些问题有些武断(isemptyisBlank 几乎可以告诉您有什么区别),并且可以通过查看他们的 Javadoc 轻松回答。
  • 与复杂性相反。实际上会等待有人参与并谈论现有解决方案与 isBlank 的性能有何不同(如果),因为 JDK 链接显示 “避免任何对象构造...” 为好吧。 :) 也找不到链接上的数字。
  • 从技术上讲,由于缺乏研究,这个问题值得一票否决。但它可能是经常搜索的问题之一,只要没有重复,好吧。所以在 SO 上可能值得拥有它。
  • 赞成,因为我刚刚用谷歌搜索了它,这是第一个结果。
  • 赞成。答案并不十分清楚,尤其是对于第一语言不是英语的人。

标签: java string is-empty java-11


【解决方案1】:

isEmpty()

java 字符串isEmpty() 方法检查此字符串是否为空。它返回true,如果字符串的长度为0,否则返回false例如

System.out.println("".isEmpty()); // Prints - True
System.out.println(" ".isEmpty()); //Prints - False 

Java 11 - isBlank()

新的实例方法java.lang.String.isBlank() 如果字符串为空或仅包含空格,则返回true, 其中空白定义为任何在传递给 Character#isWhitespace(int) 时返回 true 的代码点。

boolean blank = string.isBlank();

Java 11 之前

boolean blank = string.trim().isEmpty();

Java 11 之后

boolean blank = string.isBlank();

【讨论】:

  • “Java 11 之前”“Java 11 之后” 示例不等效。见stackoverflow.com/questions/51266582/…
  • 请注意,null.isEmpty() 会引发 NPE。
  • 基于@MarkHu 的评论,我更喜欢使用 apache.commons 来自动处理空值。
【解决方案2】:

添加的 Java 11 在 String 类中添加了名为 .isBlank() 的新方法

  1. isBlank() 方法在 Java 11 的早期版本中等同于 str.trim().isEmpty()
  2. isEmpty() :当且仅当 length() 为 0 时返回 true

这是java 11的String类中isBlank()方法的内部实现

public boolean isBlank() {
    return indexOfNonWhitespace() == length();
}

private int indexOfNonWhitespace() {
    if (isLatin1()) {
        return StringLatin1.indexOfNonWhitespace(value);
    } else {
        return StringUTF16.indexOfNonWhitespace(value);
    }
}

【讨论】:

  • 您关于isBlank() 等于str.trim().isEmpty() 的说法是错误的。 trim() 不取出 unicode 空白字符。 strip()isBlank() 做。
【解决方案3】:

区别如下:-

isBlank() 对只有空白字符的字符串返回 true,而 isEmpty() 对此类字符串返回 false。

("\n\r  ").isBlank();  //returns true
("\n\r  ").isEmpty();  //returns false

有关代码示例的详细说明,请访问:isBlank() vs isEmpty() in String class Java

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-12-23
    • 1970-01-01
    • 2023-03-20
    • 1970-01-01
    • 1970-01-01
    • 2017-08-10
    • 1970-01-01
    相关资源
    最近更新 更多