Subclass of {@link LuaValue} for representing lua strings.
Because lua string values are more nearly sequences of bytes than sequences of characters or unicode code points, the {@link LuaString}implementation holds the string value in an internal byte array.
{@link LuaString} values are generally not mutable once constructed, so multiple {@link LuaString} values can chare a single byte array.
Currently {@link LuaString}s are pooled via a centrally managed weak table. To ensure that as many string values as possible take advantage of this, Constructors are not exposed directly. As with number, booleans, and nil, instance construction should be via {@link LuaValue#valueOf(byte[])} or similar API.
When Java Strings are used to initialize {@link LuaString} data, the UTF8 encoding is assumed. The functions {@link LuaString#lengthAsUtf8(char[]),}{ {@link LuaString#encodeToUtf8(char[],byte[],int)}, and {@link LuaString#decodeAsUtf8(byte[],int,int) are used to convert back and forth between UTF8 byte arrays and character arrays.}
@see LuaValue
@see LuaValue#valueOf(String)
@see LuaValue#valueOf(byte[])