当你没加static关键字时:
public static void method_1()throws IOException
{
ObjectOutputStream oos=new ObjectOutputStream(new FileOutputStream("haha.txt"));
oos.writeObject(new Person("张三",23));//这里你new的一个对象没有对country进行赋值,而country时String类型,所以它的默认值是null
oos.close();
}
所以在你的文件haha中保存的属性就类似这样,name=张三,age=23,country=null
public static void method_2()throws Exception
{
ObjectInputStream ois=new ObjectInputStream(new FileInputStream("haha.txt"));
Person p=(Person)ois.readObject();//这时p对象中name=张三,age=23,country=null
System.out.println(p);
ois.close();
}
所以打印出来的结果是张三....23....null
而当你加上static关键字时,在类创建完以后,country的值即为cn
然后
public static void method_1()throws IOException
{
ObjectOutputStream oos=new ObjectOutputStream(new FileOutputStream("haha.txt"));
oos.writeObject(new Person("张三",23));//这里你new的一个对象虽然没有对country进行赋值,但country是静态的,所以此时它的值是cn
oos.close();
}
所以在你的文件haha中保存的属性就类似这样,name=张三,age=23,country=cn
public static void method_2()throws Exception
{
ObjectInputStream ois=new ObjectInputStream(new FileInputStream("haha.txt"));
Person p=(Person)ois.readObject();//这时p对象中name=张三,age=23,country=cn
System.out.println(p);
ois.close();
}
所以打印出来的结果是张三....23....cn |