"Bună, Amigo! Sunt din nou eu. Aș dori să-ți spun despre o altă clasă de wrapper destul de simplă. Astăzi vom vorbi despre Character, wrapper-ul pentru char."

„Această clasă este, de asemenea, destul de simplă”.

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

„Are următoarele:”

1) Un constructor care preia valoarea internă și o metodă charValue care o returnează.

2) O metodă valueOf care returnează obiecte Character, dar memorează în cache obiecte cu valori de la 0 la 127. La fel ca Integer, Short și Byte.

3) metodele hashCode() și equals — din nou, nu este nimic surprinzător aici.

„Și are o mulțime de alte metode utile (nu sunt afișate mai sus). Vă voi enumera câteva aici:”

Metodă Descriere
boolean isDefined(char)
Este caracterul un caracter Unicode?
boolean isDigit(char)
Caracterul este o cifră?
boolean isISOControl(char)
Este personajul un personaj de control?
boolean isLetter(char)
Personajul este o literă?
boolean isJavaLetterOrDigit()
Caracterul este o literă sau o cifră?
boolean isLowerCase(char)
Este aceasta o literă mică?
boolean isUpperCase(char)
Este aceasta o literă mare?
boolean isSpaceChar(char)
Este personajul un spațiu sau ceva similar (există o mulțime de personaje invizibile)?
boolean isTitleCase(char)
Este personajul un caracter de titlu?

— Mulțumesc, Kim. Cred că unele dintre aceste metode îmi vor fi utile.