一.Java序列化与反序列化的过程
1.序列化:把Java对象转化成字节序列的过程
2.反序列化:把字节队列恢复成Java对象的过程
为什么要用序列化:
1.把对象的字节永久的保存到硬盘上
2.网络传输
如何实现序列化:
1.实现Seriesible接口
2.实现Externarizble接口
二.equals方法和hashCode方法的关系
同一个对象在往Set集合里面放进去的时候,会调用.hashcode方法进行寻址,如果不重写该方法,会造成同样的对象的hashcode不一样,导致2个对象虽然属性值一样,但是还存了2份;
如果不重写equals方法会造成往hashmap里面添加的时候,判断对象并不存在,而继续添加一个元素。
所以二者是同时重写的
原文:
https://blog.youkuaiyun.com/u012056417/article/details/54110314
三.Java和C++的区别有哪些
1.Java是运行在虚拟机上,先编译后解释成机器语言字节码文件,最后运行在操作系统上,c++可以直接编译成字节码文件在系统上运行
2.Java中内存回收是由JVM管理的,c++不是
3.Java由于需要jvm编译,所以使用场景没有c++更偏底层
四.静态与非静态的区别
1.静态方法、静态变量会随着JVM虚拟机启动而加载,JVM虚拟机销毁前会一直在内存中metadata中存在,非静态是实例化的时候创建内存空间,使用完毕后回收内存空间
2.静态方法可以直接使用类名调用
3.静态方法只能调用静态的全局变量
五.Java中==和equals的区别
1.==是运算符,equals是方法
2.==比较基本类型时,比较的是栈里面值内容是否相等,比较引用类型时,比较的是对象引用的地址值是否相等
3.object中的equals实现与==是一样的,重写了equals方法后比较的是内容是否相等