java - getBytes 和 serialize with String 有什么区别?

标签 java string serialization redis

正如标题所说,我无法将 getBytes[]serialization mechanismString 区分开来。下面是 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/

相关文章:

java - 作为 sudo : Unable to open DISPLAY 运行 javafx jar

string - 一系列字符串的最长公共(public)子序列

java - 用 Java 反序列化员工记录

c# - C# 中用于嵌套节点的 XML 序列化

java - Webdriver:我无法自动化 slider

java - ModelAndView 返回类型为 "text/plain"的源代码

java - 面板未显示在 JFrame 中

java - 需要删除字符串中多余的方括号

java - Python 的 str.join 在 Java 中是否有直接的等价物?

java - 为不在同一路径中的类编写自定义 java 序列化器