Character.isWhitespace(char)和Character.isSpaceChar(char)之间的区别是什么

时间:2016-09-12 13:02:56

标签: java

如果它是空的char / white空格,则返回true,否则返回false。我的问题是为什么java有两种方法,因为它们做同样的事情

3 个答案:

答案 0 :(得分:7)

方法isSpaceChar(char)仅用于检查unicode空格字符(SPACE_SEPARATOR,LINE_SEPARATOR,PARAGRAPH_SEPARATOR),而方法isWhiteSpace(char)用于空格以及其他空格字符,如制表符,回车等

char ch='\t';
System.out.println(Character.isWhitespace(ch));
System.out.println( Character.isSpaceChar(ch));

输出

true
false

答案 1 :(得分:2)

isSpaceChar将检查char是否是unicode空格char,而isWhitespace检查是否有任何空格char。当且仅当它满足以下条件之一时,字符才是Java空白字符:

It is a Unicode space character (SPACE_SEPARATOR, LINE_SEPARATOR, or PARAGRAPH_SEPARATOR) but is not also a non-breaking space ('\u00A0', '\u2007', '\u202F').

It is '\t', U+0009 HORIZONTAL TABULATION.  
It is '\n', U+000A LINE FEED.  
It is '\u000B', U+000B VERTICAL TABULATION.  
It is '\f', U+000C FORM FEED.  
It is '\r', U+000D CARRIAGE RETURN.  
It is '\u001C', U+001C FILE SEPARATOR.  
It is '\u001D', U+001D GROUP SEPARATOR.  
It is '\u001E', U+001E RECORD SEPARATOR.  
It is '\u001F', U+001F UNIT SEPARATOR. 

所以存在重叠,因为isWhitespace将为Unicode空间字符返回true,而且整个负载也会更多。

请参阅: https://docs.oracle.com/javase/7/docs/api/java/lang/Character.html#isWhitespace(char)

答案 2 :(得分:1)

差异在specification

中详细说明
  

isWhiteSpace:根据Java确定指定的字符是否为空格。当且仅当它满足以下条件之一时,字符才是Java空白字符:[...]

     

isSpaceChar:确定指定的字符是否为Unicode空格字符。当且仅当Unicode标准将字符指定为空格字符时,才将字符视为空格字符。

这两个定义是不同的,根据用例,您需要一个或另一个。对于简单的需求,您可能不关心差异,但显然它就在那里。