String = null 和 String.isEmpty 之间有什么区别吗?

2022-09-03 08:37:45

使用 if 语句通过使用 String = null 或 String.isEmpty() 检查字符串是否为空时,是否有任何区别?

结婚

public String name;

if(name == null)
{
    //do something
}

public String name;

if(name.isEmpty())
{
    //do something
}

如果有任何不同(包括性能问题),请告诉我。


答案 1

空字符串是长度为零的字符串。空值根本没有字符串。

  • 如果 s 为空字符串,则表达式将返回。s == nullfalse
  • 如果字符串为 null,则第二个版本将抛出 a。NullPointerException

下表显示了这些差异:

+-------+-----------+----------------------+
| s     | s == null | s.isEmpty()          |
+-------+-----------+----------------------+
| null  | true      | NullPointerException |
| ""    | false     | true                 |
| "foo" | false     | false                |
+-------+-----------+----------------------+

答案 2

已分配有 “” 的字符串不包含任何值,但为空 (length=0),未实例化的字符串为 null。