牛客网错题集锦3

来源:互联网 发布:客户端软件开发 编辑:程序博客网 时间:2024/05/19 17:05

1.简单记忆线程安全的集合类:

喂!SHE!

喂是指vector,S是指stack,H是指hashtable,E是指enumeration。



2.

声明为static和transient类型的成员数据不能被串行化,因为static代表类的状态,transient代表对象的临时数据。



3.

对象的序列化:Java平台允许我们在内存中创建可复用的Java对象,但一般情况下,只有当JVM处于运行时,这些对象才可能存在,即,这些对象的生命周期不会比JVM的生命周期更长,但在现实应用中,就可能要求在JVM停止运行之后能够保存持久化指定的对象,并在将来重新读取被保存的对象。Java对象序列化就能够帮助我们实现该功能。

使用java对象序列化,在保存对象时,会把其状态保存为一组字节,在未来再将这些字节组装成对象。必须注意的是,对象序列化保存的是对象的状态,即它的成员变量。由此可知,对象序列化不会关注类中的静态变量。

使用ObjectInputStream和ObjectOutputStream进行对象的传输。

注意:基本数据类型的变量可以直接序列化

对象要被序列化,它的类必须实现Serializable接口,如果一个类中有引用类型的变量,这个引用类型的变量的类也必须实现Serializable接口,如果这个引用类型的变量不想被实例化,则用transient修饰。



4.

内部类其实和类的属性没什么区别,只是在声明的时候必须是Outer.Inner a,就像int a一样。

至于静态内部类和非静态内部类new的时候有点区别,

Outer.Inner a =new Outer().new Inner()(非静态,先有Outer对象才能有属性)

Outer.Inner a =new Outer.Inner(要把Outer.Inner看成一部分,就像类变量一样。)

原创粉丝点击