String literals are constrained to 65535 bytes due to being stored in the constant pool. I'm not sure if there is a limit on run time strings, apart from the obvious limit of 2^31-1 due to array addressing.
Edit to clear things up: This is 65535 bytes in Modified Utf8 encoding. It's the same as normal Utf8 except that the null character is two bytes and characters outside the BMP use a surrogate pair (6 bytes instead of 4). If you're just doing ascii, then this is just one byte per character.