isEmpty() 和 isBlank()的区别
平时自己开发的时候没有注意到这个地方,直到实习的时候代码审查的时候发现其用法上两者的不同.
isEmpty()
java
public static boolean isEmpty(String str) {
return str == null || str.length() == 0;
}
isBlank()
java
public static boolean isBlank(String str) {
int strLen;
if (str != null && (strLen = str.length()) != 0) {
for(int i = 0; i < strLen; ++i) {// 判断字符是否为空格、制表符、tab
if (!Character.isWhitespace(str.charAt(i))) {
return false;
}
}
return true;
} else {
return true;
}
}
isWhitespace()
用于判断是否为空白字符。
java
public static boolean isWhitespace(char ch) {
return isWhitespace((int)ch);
}
判断是空白字符的标准:
Unicode space character(SPACE_SEPARATOR、LINE_SEPARATOR、PARAGRAPH_SEPARATOR)
\t:制表符。
\n:换行符。
\u000B:线路表符号。
\f:换页符。
\r:回车。
\u001C:文件分隔符。
\u001D:"成组分离"符。
\u001E:记录分隔符号。
\u001F:单元分隔符。
null和空字符串的区别
-
null表示一个变量没有引用任何对象,而空字符串表示一个字符串变量引用了一个长度为0的字符串。
-
null:表示一个变量没有引用任何对象 。也就是说,这个变量还没有被分配内存。
-
空字符串:表示一个字符串变量引用了一个长度为0的字符串。
java
String str = ""; //空字符串
实例
java
isEmpty(null)------true
isEmpty("")------true //空字符串
isEmpty(" ")------false //
isEmpty("abc")----false
java
isBlank(null)------true
isBlank("")------true
isBlank(" ")------true
isBlank("\t \n \f \r")------true //制表符、换行符、换页符和回车符
isBlank("abc")------false