"Olá, amigo! Sou eu de novo. Gostaria de falar sobre outra classe wrapper bastante simples. Hoje falaremos sobre Character, o wrapper para char."

"Esta classe também é bastante simples."

Código
class Character
{
 private final char value;

 Character(char value)
 {
  this.value = value;
 }

 public char charValue()
 {
  return value;
 }

 static final Character cache[] = new Character[127 + 1];

 public static Character valueOf(char c)
 {
  if (c <= 127)
   return cache[(int)c];

  return new Character(c);
 }

 public int hashCode()
 {
  return (int)value;
 }

 public boolean equals(Object obj)
 {
  if (obj instanceof Character)
  {
   return value == ((Character)obj).charValue();
  }
  return false;
 }
}

"Tem o seguinte:"

1) Um construtor que recebe o valor interno e um método charValue que o retorna.

2) Um método valueOf que retorna objetos Character, mas armazena em cache objetos com valores de 0 a 127. Assim como Integer, Short e Byte.

3) métodos hashCode() e equals — novamente, não há nada de surpreendente aqui.

"E tem muitos outros métodos úteis (não mostrados acima). Vou listar alguns para você aqui:"

Método Descrição
boolean isDefined(char)
O caractere é um caractere Unicode?
boolean isDigit(char)
O caractere é um dígito?
boolean isISOControl(char)
O personagem é um personagem de controle?
boolean isLetter(char)
O caractere é uma letra?
boolean isJavaLetterOrDigit()
O caractere é uma letra ou um dígito?
boolean isLowerCase(char)
Isso é uma letra minúscula?
boolean isUpperCase(char)
Isso é uma letra maiúscula?
boolean isSpaceChar(char)
O personagem é um espaço ou algo parecido (existem muitos personagens invisíveis)?
boolean isTitleCase(char)
O caractere é um caractere de caixa de título?

"Obrigado, Kim. Acho que alguns desses métodos serão úteis para mim."