正如标题所说,我getBytes[]
与serialization mechanism
的{{1}}不同String
。以下是getBytes[]
和serialization mechanism
之间的测试:
public void testUTF() {
byte[] data = SerializeUtil.serUTFString(str);
System.out.println(data.length);
System.out.println(str.getBytes().length);
}
以下是SerializeUtil
:
public static byte [] serUTFString(String data){
byte[] result = null;
ObjectOutputStream oos = null;
ByteArrayOutputStream byteArray = new ByteArrayOutputStream();
try {
oos = new ObjectOutputStream(byteArray);
try {
oos.writeUTF(data);
oos.flush();
result = byteArray.toByteArray();
} finally {
oos.close();
}
} catch (Exception e) {
e.printStackTrace();
}
return result;
}
当我将str
设置为Redis
时,两者都可以正常工作,但getBytes[]
似乎更有效。由于它们都从byte array
返回String
,所以差异是serialization
是必要的吗?
答案 0 :(得分:2)
String.getBytes()返回一个字节数组,以默认编码方式重新表示字符串字符。 ObjectOutputStream.writeUTF以修改后的UTF-8格式写入字符串长度,然后写入字节,请参阅java.io.DataOutput API。