"Ciao, Amigo! Sono di nuovo io. Vorrei parlarti di un'altra classe wrapper abbastanza semplice. Oggi parleremo di Character, il wrapper per char."

"Anche questa classe è abbastanza semplice."

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

"Ha quanto segue:"

1) Un costruttore che accetta il valore interno e un metodo charValue che lo restituisce.

2) Un metodo valueOf che restituisce oggetti Character, ma memorizza nella cache oggetti con valori da 0 a 127. Proprio come Integer, Short e Byte.

3) metodi hashCode() e equals — ancora una volta, non c'è nulla di sorprendente qui.

"E ha molti altri metodi utili (non mostrati sopra). Ne elencherò alcuni per te qui:"

Metodo Descrizione
boolean isDefined(char)
Il carattere è un carattere Unicode?
boolean isDigit(char)
Il carattere è una cifra?
boolean isISOControl(char)
Il personaggio è un personaggio di controllo?
boolean isLetter(char)
Il carattere è una lettera?
boolean isJavaLetterOrDigit()
Il carattere è una lettera o una cifra?
boolean isLowerCase(char)
È una lettera minuscola?
boolean isUpperCase(char)
È una lettera maiuscola?
boolean isSpaceChar(char)
Il carattere è uno spazio o qualcosa di simile (ci sono molti caratteri invisibili)?
boolean isTitleCase(char)
Il personaggio è un personaggio titlecase?

"Grazie, Kim. Penso che alcuni di questi metodi mi saranno utili."