gpt4 book ai didi

java - 当应用于基本类型的实例时,ObjectInput/OutputStream 和 DataInput/OutputStream 有什么区别?

转载 作者:行者123 更新时间:2023-11-30 05:38:16 25 4
gpt4 key购买 nike

在我看来,ObjectInputStream/ObjectOutputStreamDataInputStream/DataOutputStream都可以应用于实例原始类型。当ObjectInputStream/ObjectOutputStreamDataInputStream/DataOutputStream都应用于基本类型的实例时,它们之间有什么区别?

它们都能以相同的方式(反)序列化原始类型的实例吗?

最佳答案

您可以通过快速测试轻松发现这一点:

import java.io.*;

public class Test {
public static void main(String[] args) {
try {
ObjectOutputStream out1 = new ObjectOutputStream(new FileOutputStream("1.out"));
out1.writeByte(100);
out1.close();

DataOutputStream out2 = new DataOutputStream(new FileOutputStream("2.out"));
out2.writeByte(100);
out2.close();
} catch (Exception ex) {
ex.printStackTrace();
}
}
}

当你运行这段代码时,你会直接看到区别:ObjectOutputStream的文件更大。 ObjectOutputStream 总共写入 7 个字节,而不是 DataOutputStream 只写入 1 个字节。

ObjectOutputStream 不只是写入核心数据。它使用 Java 对象序列化流协议(protocol),可以在 https://docs.oracle.com/javase/7/docs/platform/serialization/spec/protocol.html#10258 找到该协议(protocol)。

关于java - 当应用于基本类型的实例时,ObjectInput/OutputStream 和 DataInput/OutputStream 有什么区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56207091/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com