Developers who aren't used to writing global software might determine a character's properties by comparing it with character constants. For instance, they might write code like this:
char ch; ... // This code is WRONG! if ((ch >= 'a' && ch <= 'z') || (ch >= 'A' && ch <= 'Z')) // ch is a letter ... if (ch >= '0' && ch <= '9') // ch is a digit ... if ((ch == ' ') || (ch =='\n') || (ch == '\t')) // ch is a whitespace
The preceding code is wrong because it works only with English and a few other languages. To internationalize the previous example, replace it with the following statements:
char ch; ... // This code is OK! if (Character.isLetter(ch)) ... if (Character.isDigit(ch)) ... if (Character.isSpaceChar(ch))
Character methods rely on the Unicode Standard for determining the properties of
a character. Unicode is a 16-bit character encoding that supports the
world's major languages. In the Java programming language
char values represent Unicode characters. If you check
the properties of a char with the appropriate
Character method, your code will work with all major
languages. For example, the Character.isLetter method
returns true if the character is a letter in Chinese,
German, Arabic, or another language.
The following list gives some of the most useful Character
comparison methods. The Character API documentation fully
specifies the methods.
isDigit
isLetter
isLetterOrDigit
isLowerCase
isUpperCase
isSpaceChar
isDefined
The Character.getType method returns the Unicode category
of a character. Each category corresponds to a constant defined in the
Character class. For instance, getType
returns the Character.UPPERCASE_LETTER constant for the
character A. For a complete list of the category constants returned by
getType, see the
Character API documentation. The following example shows how to use
getType and the Character category constants. All
of the expressions in these if statements are
true:
if (Character.getType('a') == Character.LOWERCASE_LETTER)
...
if (Character.getType('R') == Character.UPPERCASE_LETTER)
...
if (Character.getType('>') == Character.MATH_SYMBOL)
...
if (Character.getType('_') == Character.CONNECTOR_PUNCTUATION)