„Cześć, Amigo! To znowu ja. Chciałbym opowiedzieć ci o innej dość prostej klasie opakowującej. Dzisiaj będziemy mówić o postaci, opakowaniu dla znaku”.

„Ta klasa jest również dość prosta”.

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

„Ma następujące elementy:”

1) Konstruktor pobierający wartość wewnętrzną i metodę charValue, która ją zwraca.

2) Metoda valueOf, która zwraca obiekty typu Character, ale buforuje obiekty z wartościami od 0 do 127. Podobnie jak Integer, Short i Byte.

3) metody hashCode() i equals — znowu nie ma w tym nic zaskakującego.

„I ma wiele innych przydatnych metod (niepokazanych powyżej). Wymienię kilka dla ciebie tutaj:”

metoda Opis
boolean isDefined(char)
Czy znak jest znakiem Unicode?
boolean isDigit(char)
Czy znak jest cyfrą?
boolean isISOControl(char)
Czy postać jest postacią kontrolną?
boolean isLetter(char)
Czy postać jest literą?
boolean isJavaLetterOrDigit()
Czy znak jest literą czy cyfrą?
boolean isLowerCase(char)
Czy to jest mała litera?
boolean isUpperCase(char)
Czy to jest wielka litera?
boolean isSpaceChar(char)
Czy znak jest spacją lub czymś podobnym (jest wiele niewidocznych znaków)?
boolean isTitleCase(char)
Czy postać jest znakiem tytułowym?

„Dziękuję, Kim. Myślę, że niektóre z tych metod będą dla mnie przydatne”.