静态成员变量能不能被序列化????

oyhj_nicholas oyhj_nicholas 墨衍会员 · AI 创作全网分发 墨衍智能分发 通过墨衍一键同步至各平台 可同步平台 CSDN微信公众号微博知乎掘金百家号博客园抖音小红书 你的文章也可以这样分发 墨衍会员 ¥399起/年,写一次发全网 我也要 + 加入社区
程序如下:

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++静态成员函数不能调用非静态成员变量(详解)。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧

weixin_38656395

详解c++ 静态成员变量

类定义时的静态成员只是声明,静态成员的定义和初始化要在类之外完成 C++的static关键字可修饰类成员变量/方法,表示变量/方法不从属于特定对象,而是属于类的。仔细琢磨静态成员变量,会发现其与C++的方式既相容也矛盾,具有特殊性。 先说相容的一面。·C/C++·有声明和定义的说法:声明给出签名,定义给出具体实现。对类型而言,声明不一定能知道其对象占用空间大小,但根据定义肯定能确定内存占用。说静态成员与C++方式是相容的,因为其初始化方式与方法的定义一致。下面是一个例子: // Foo.hpp namespace tlanyan { // 类声明和定义 class Foo { pri

weixin_38667403

C++静态成员变量和静态成员函数

静态成员变量和静态成员函数 class ClassA { int a; int b; static int c; //静态成员变量 static void xxx_fun() //静态成员函数 { ... } } 普通成员变量每个对象都有各自的一份,静态成员变量所有对象共享。 普通成员函数每个对象都有各自的一份,静态成员函数所有对象共享,内存只有一份。 静态成员函数必须作用于某个具体对象,静态成员函数并不具体作用于某个对象 静态成员不需要通过对象就能访问。 静态成员变量本质是全局变量,静态成员函数本质是全局函数。 静态成员函数不能为虚函数。 静态成员函数没有thi

NEDL001

C++中静态成员函数与静态成员变量(static )

C++中静态成员函数与静态成员变量(static ) 这篇介绍了静态成员函数与静态成员变量,是我的读书笔记,我希望它够简短但又比较全面,起到复习的作用。如果有一些C++知识记不清楚了,它可以帮你很快回忆起来。 复习C语言的static关键字 (1)加在局部变量的前面使之成为静态局部变量,作用域还是在函数内部,可是生存周期延长了。 (2)加在全局变量的前面限定该变量作用域为文件作用域,就是说即使其他文件使用了extern扩展作用域也不行。这在C语言的多人项目中非常有用,避免了变量的重名。然而在C++中这一功能已经被命名空间取代,但是为了保持和C语言的兼容,static还是有这样的功能。 (3)

weixin_38591011

C++类中的静态成员变量和静态成员函数的作用

C++类中的静态成员变量和静态成员函数的作用

wangyong_qiyexin
评论 4
收藏 已收藏
分享
返回顶部
oyhj_nicholas
Java SE 62,621 成员 307,251 内容