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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 陈斌 中级黑马   /  2012-2-26 23:41  /  1884 人查看  /  1 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

package four.day;

import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;

public class objectwriteDemo {

        /**
         * @param args
         * @throws Exception
         */
        public static void main(String[] args) throws Exception {
                // TODO Auto-generated method stub
   Reader();
                //Writer();
        }
public static void Writer() throws FileNotFoundException, IOException
{
        ObjectOutputStream oos=new ObjectOutputStream(new FileOutputStream("g:/java/java基础4/1.txt"));
        oos.writeObject(new Person("lisi",30));
        oos.close();
}
public static void Reader() throws FileNotFoundException, IOException, Exception
{
        ObjectInputStream ois=new ObjectInputStream(new FileInputStream("g:/java/java基础4/1.txt"));
        //Person p=(Person)ois.readObject();
        //System.out.println(p);
        Object o=ois.readObject();
        System.out.println(o);
        ois.close();
}
}
-----------------------------------------------------------------person-----------------------------------------
package four.day;

import java.io.Serializable;

public class Person implements Serializable {
String name;
int age;
Person(String name,int age)
{
        this.name=name;
        this.age=age;
}
}
为什么用Person 和Object会分别读出不一样的结果?
//Person p=(Person)ois.readObject();
        //System.out.println(p);//结果:four.day.Person@bf2d5e
        Object o=ois.readObject();
        System.out.println(o)//结果:four.day.Person@13bad12

1 个回复

倒序浏览
为什么用Person 和Object会分别读出不一样的结果?

1、打印时,将调用对象的toString(), Person 无定义toString(),将用Object 的 toString()。
2、据API:
Object 类的 toString 方法返回一个字符串,该字符串由类名(对象是该类的一个实例)、at 标记符“@”和此对象哈希码的无符号十六进制表示组成。换句话说,该方法返回一个字符串,它的值等于:getClass().getName() + '@' + Integer.toHexString(hashCode())

3、Person 和Object 是两个对象,由 Object 类定义的 hashCode 方法会针对不同的对象返回不同的整数,故结果不一样。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马