Character encoding tables vary, the class String is, as far as I am concerned, capable of displaying, formatting, and manipulating characters of any encoding type.
The numbers you give relate to INTEGER_MAX value which also applies to memory allocation of arrays (taking into account the data type). For instance if you have a byte array of length INTEGER_MAX, you get INTEGER_MAX bytes of memory allocated for use. I'm not sure if all encoding tables use a fixed amount of memory, ones I know use a single byte for a single character. So there are 2^8 possible different representations for each character set. That makes 256 unique representations.