正如标题所说,我无法将 getBytes[]
与 serialization mechanism
与 String
区分开来。下面是 getBytes[]
和 序列化机制
之间的测试:
public void testUTF() {
byte[] data = SerializeUtil.serUTFString(str);
System.out.println(data.length);
System.out.println(str.getBytes().length);
}
这是SerializeUtil
:
public static byte[] serUTFString(字符串数据){
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[]
似乎更有效率。既然都是从String
返回一个byte array
,那有什么区别,是否需要序列化
?
最佳答案
String.getBytes() 返回一个字节数组,以默认编码表示字符串字符。 ObjectOutputStream.writeUTF 以修改后的 UTF-8 格式写入字符串长度,然后写入字节,请参阅 java.io.DataOutput API。
关于java - getBytes 和 serialize with String 有什么区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16755351/