1.序列化和反序列化
(1)通过java.io.Serializable接口实现
1)使用Serializable标识需要进行序列化的类,并不需要实现任何方法。
public class User implements Serializable
2)进行序列化
User user = new user();
ObjectOutputStream oo = new ObjectOutputStream(new FileOutputStream(new File("E:/Person.txt")));
oo.writeObject(user);//进行序列化
3)进行反序列化
ObjectInputStream ois = new ObjectInputStream(new FileInputStream( new File("E:/Person.txt")));
User user = (User) ois.readObject();//反序列化
(2)通过java.io.Externalizable接口实现
1)通过Externalizable标识需要进行序列化的类
需要重写两个方法:
public void writeExternal(ObjectOutput out) throws IOException
public void readExternal(ObjectInput in) throws IOException, ClassNotFoundException
2)进行序列化和反序列化
参考:https://www.cnblogs.com/junzi2099/p/9014814.html
2. static :静态的
不依赖类特定的实例,被类的所有实例共享。
(1)修饰成员变量:
所修饰的成员变量不属于对象的数据结构,而是属于类的变量,通常通过类名来引用static成员。
(2)修饰方法:
不需要针对某些对象进行操作,其运行结果仅仅与参数有关。直接用类名就可以调用了。因此static方法中不能对非static成员进行访问。
(3)static块:
属于类的代码块,在类加载期间执行并且只执行一次,可以用来加载静态资源。
3. final:终态的
(1)final修饰变量:
final意为不可改变,修饰成员变量时可以在生命时初始化或者在构造函数中初始化,修饰局部变量时在使用之前初始化。要是企图改变final修饰等变量值则会编译错误。
(2)final修饰方法:
final修饰等方法不能被重写。
(3)final修饰类:
final修饰等类不能被继承,jdk中的一些基本类库被定义成final,例如String,Math,Integer等,这样可以防止对系统造成危害。
4. static final
static final修饰的成员变量被成为常量,必须声明时初始化并且不可被改变,static final常量在编译期间会被取代为其初始值。
参考:https://www.cnblogs.com/xuyunqi/p/7875998.html