"Hi, Amigo! It's me again. I'd like to tell you about another fairly simple wrapper class. Today we'll be talking about Character, the wrapper for char."

"This class is also quite simple."

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;

"It has the following:"

1) A constructor that takes the internal value and a charValue method that returns it.

2) A valueOf method that returns Character objects, but caches objects with values from 0 to 127. Just like Integer, Short, and Byte.

3) hashCode() and equals methods — again, there's nothing surprising here.

"And it has lots of other useful methods (not shown above). I'll list a few for you here:"

Method Description
boolean isDefined(char)
Is the character a Unicode character?
boolean isDigit(char)
Is the character a digit?
boolean isISOControl(char)
Is the character a control character?
boolean isLetter(char)
Is the character a letter?
boolean isJavaLetterOrDigit()
Is the character a letter or a digit?
boolean isLowerCase(char)
Is this a lowercase letter?
boolean isUpperCase(char)
Is this an uppercase letter?
boolean isSpaceChar(char)
Is the character a space or something similar (there are lots of invisible characters)?
boolean isTitleCase(char)
Is the character a titlecase character?

"Thank you, Kim. I think some of these methods will be useful for me."