黑马程序员技术交流社区

标题: 有关于序列号问题 [打印本页]

作者: 陈斌    时间: 2012-2-26 23:41
标题: 有关于序列号问题
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

作者: 黄秋    时间: 2012-2-27 02:24
为什么用Person 和Object会分别读出不一样的结果?

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

3、Person 和Object 是两个对象,由 Object 类定义的 hashCode 方法会针对不同的对象返回不同的整数,故结果不一样。




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2