我使用ObjectOutputStream
编写了以下代码:
class ClassToTestOutputStream implements Serializable{
int a;
String b;
public ClassToTestOutputStream(){
a=10;
b="Deepak";
}
public String toString() {
String s = ""+a+" "+b;
return s;
}
}
public class UsingOutputStreams {
ClassToTestOutputStream ref;
private ObjectOutputStream oos;
public UsingOutputStreams(){
try {
oos = new ObjectOutputStream(System.out);
} catch (IOException e) {
e.printStackTrace();
}
ref = new ClassToTestOutputStream();
}
public void writeOnScreen(){
try {
System.out.println("Writing on Screen");
oos.writeObject(ref);
} catch (IOException e) {
e.printStackTrace();
}
}
public static void main(String[] args) {
UsingOutputStreams obj = new UsingOutputStreams();
obj.writeOnScreen();
}
}
我得到了回答:
��在屏幕上书写
srClassToTestOutputStream����S��MIaL bt Ljava / lang / String; xp
t迪帕克
请帮我弄清楚为什么打印这样的输出。
答案 0 :(得分:1)
ObjectOutputStream
以可由ObjectInputStream
读取的形式编写Java对象。产生的输出不用于人类消费,并包含二进制形式的元数据和值。它并不意味着人类可读。正如您所见,尝试打印或显示写入ObjectOutputStream
的数据将导致垃圾。
您应该仔细阅读ObjectOutputStream
的Javadoc。