A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 三生石 中级黑马   /  2014-3-1 18:40  /  1227 人查看  /  4 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

程序如下:
import java.io.*;
class Person implements Serializable
{
        private String name;
        private int age;
        public Person(String name,int age)
        {
                this.name=name;
                this.age=age;
        }
        public void print()
        {
                System.out.println("姓名:"+name+"/n年龄:"+age);
        }
}
class ObjectOutputTest
{
        public static void main(String[] args)throws Exception
        {
                Person p=new Person("三生石",23);
                FileOutputStream fos=new FileOutputStream("d:\\person.txt");
                ObjectOutputStream oos=new ObjectOutputStream(fos);
                oos.writeObject(p);
                fos.close();
                oos.close();
        }
}

运行结果:

为什么是乱码呢?

评分

参与人数 1技术分 +1 收起 理由
zzkang0206 + 1

查看全部评分

4 个回复

倒序浏览
这不是乱码吧,只不过是数据经过啦系统默认的编码表,而生成的。是把你存储的数据查表后的结果。

评分

参与人数 1技术分 +1 收起 理由
zzkang0206 + 1

查看全部评分

回复 使用道具 举报
你打开的是".class"文件吧,person.class文件用记事本是打不开的,是给java虚拟机阅读的。

评分

参与人数 1技术分 +1 收起 理由
zzkang0206 + 1

查看全部评分

回复 使用道具 举报
你用的是字节输出流,,一个中文代表两个字节,而当你用字节流输出时它会逐个字节进行输出,就会导致乱码.你改一下用字符流试试.

评分

参与人数 1技术分 +1 收起 理由
zzkang0206 + 1

查看全部评分

回复 使用道具 举报
这个是对象的序列化,是需要在硬盘上存储对象时用的。出现乱码是因为记事本使用默认的字符集对字节进行查表的结果。这个内容不是给我们看的,如果想知道对象的内容,可以用ObjectInputStream中的readObject进行读取。

评分

参与人数 1技术分 +1 收起 理由
zzkang0206 + 1

查看全部评分

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马