静态成员变量能不能被序列化????
import java.io.*;
class Student implements Serializable
{
private String name;
private transient String password;
private static int count=0;
public Student(String name,String password)
{
System.out.println("调用Student的带参的构造方法");
this.name=name;
this.password=password;
count++;
}
public String toString()
{
return "人数: "+count+" 姓名: "+name+" 密码: "+password;
}
}
public class ObjectSerTest1
{
public static void main(String args[])
{
try{
FileOutputStream fos=new FileOutputStream("test.obj");
ObjectOutputStream oos=new ObjectOutputStream(fos);
Student s1=new Student("张三","12345");
Student s2=new Student("王五","54321");
oos.writeObject(s1);
oos.writeObject(s2);
oos.close();
FileInputStream fis=new FileInputStream("test.obj");
ObjectInputStream ois=new ObjectInputStream(fis);
Student s3=(Student)ois.readObject();
Student s4=(Student)ois.readObject();
System.out.println(s3);
System.out.println(s4);
ois.close();
}
catch(IOException e)
{
e.printStackTrace();
}
catch(ClassNotFoundException e1)
{
e1.printStackTrace();
}
}
}
count为Student的静态成员变量,书上说静态成员不能被序列化,那为什么此程序运行的结果:输出s3和s4时 count为2呢,按理说应该为0才对啊?还是我哪里理解错了,请高手指定,谢谢了
相关推荐
C++静态成员函数不能调用非静态成员变量(详解)
下面小编就为大家带来一篇C++静态成员函数不能调用非静态成员变量(详解)。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
详解c++ 静态成员变量
类定义时的静态成员只是声明,静态成员的定义和初始化要在类之外完成 C++的static关键字可修饰类成员变量/方法,表示变量/方法不从属于特定对象,而是属于类的。仔细琢磨静态成员变量,会发现其与C++的方式既相容也矛盾,具有特殊性。 先说相容的一面。·C/C++·有声明和定义的说法:声明给出签名,定义给出具体实现。对类型而言,声明不一定能知道其对象占用空间大小,但根据定义肯定能确定内存占用。说静态成员与C++方式是相容的,因为其初始化方式与方法的定义一致。下面是一个例子: // Foo.hpp namespace tlanyan { // 类声明和定义 class Foo { pri
C++静态成员变量和静态成员函数
静态成员变量和静态成员函数 class ClassA { int a; int b; static int c; //静态成员变量 static void xxx_fun() //静态成员函数 { ... } } 普通成员变量每个对象都有各自的一份,静态成员变量所有对象共享。 普通成员函数每个对象都有各自的一份,静态成员函数所有对象共享,内存只有一份。 静态成员函数必须作用于某个具体对象,静态成员函数并不具体作用于某个对象 静态成员不需要通过对象就能访问。 静态成员变量本质是全局变量,静态成员函数本质是全局函数。 静态成员函数不能为虚函数。 静态成员函数没有thi
C++中静态成员函数与静态成员变量(static )
C++中静态成员函数与静态成员变量(static ) 这篇介绍了静态成员函数与静态成员变量,是我的读书笔记,我希望它够简短但又比较全面,起到复习的作用。如果有一些C++知识记不清楚了,它可以帮你很快回忆起来。 复习C语言的static关键字 (1)加在局部变量的前面使之成为静态局部变量,作用域还是在函数内部,可是生存周期延长了。 (2)加在全局变量的前面限定该变量作用域为文件作用域,就是说即使其他文件使用了extern扩展作用域也不行。这在C语言的多人项目中非常有用,避免了变量的重名。然而在C++中这一功能已经被命名空间取代,但是为了保持和C语言的兼容,static还是有这样的功能。 (3)
C++类中的静态成员变量和静态成员函数的作用
C++类中的静态成员变量和静态成员函数的作用


Java SE
