char is actually a numeric type containing the unicode value (UTF-16, to be exact - you need twochars to represent characters outside the BMP) of the character. You can do everything with it that you can do with an int.
Character.getNumericValue() tries to interpret the character as a digit.