"¡Hola, amigo! Soy yo otra vez. Me gustaría contarte sobre otra clase de contenedor bastante simple. Hoy hablaremos sobre Character, el contenedor para char".

"Esta clase también es bastante simple".

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;
 }
}

"Tiene lo siguiente:"

1) Un constructor que toma el valor interno y un método charValue que lo devuelve.

2) Un método valueOf que devuelve objetos de carácter, pero almacena en caché objetos con valores de 0 a 127. Al igual que Integer, Short y Byte.

3) métodos hashCode() e equals — de nuevo, no hay nada sorprendente aquí.

"Y tiene muchos otros métodos útiles (que no se muestran arriba). Te enumeraré algunos aquí:"

Método Descripción
boolean isDefined(char)
¿Es el carácter un carácter Unicode?
boolean isDigit(char)
¿El carácter es un dígito?
boolean isISOControl(char)
¿Es el personaje un personaje de control?
boolean isLetter(char)
¿El personaje es una letra?
boolean isJavaLetterOrDigit()
¿El carácter es una letra o un dígito?
boolean isLowerCase(char)
¿Es esta una letra minúscula?
boolean isUpperCase(char)
¿Es esta una letra mayúscula?
boolean isSpaceChar(char)
¿El personaje es un espacio o algo similar (hay muchos personajes invisibles)?
boolean isTitleCase(char)
¿Es el personaje un personaje principal?

"Gracias, Kim. Creo que algunos de estos métodos me serán útiles".