-
什么是Java序列化和反序列化?
答:序列化就是把对象转换为字节序列的过程。而反序列化则是把字节序列恢复为对象的过程。 -
Java为什么需要序列化对象?
答:开发中,我们经常需要让对象及其状态在多个应用间传递和共享,或者是将对象及其状态持久化,然后重新读取被保存的对象及其状态继续处理相应业务,这就需要Java的序列化来实现。 -
静态变量能不能被序列化?
答:序列化的是对象,而静态变量是类级别的,所以无法序列化。 -
Java序列化和反序列化为什么要实现Serializable接口?
答:在Java中实现了Serializable接口后,就是标识了这个Java对象可序列化的,所以之后JVM底层会帮我们实现序列化和反序列化的操作。 -
为什么要在实现Serializable接口的同时最好还要指定serialVersionUID的值?
答:首先要明白如果我们没有显式的指定serialVersionUID,那么JVM在做序列化时会根据属性会为我们生成默认的serialVersionUID,而在做反序列化时,JVM一样会根据传过来的对象的属性生成一个新的serialVersionUID,然后只有来回两个serialVersionUID的值相等,才能成功反序列化。设想下一旦对象的属性发生改变,那么生成的默认serialVersionUID也是会变化的,所以显式的指定serialVersionUID的值,那么这个serialVersionUID就不会再因为属性的变化而变化,也就保证能够反序列化成功。 -
当一个对象被当作参数传递到一个方法后,此方法可改变这个对象的属性,并可返回变化后的结果,那么这里到底是值传递还是引用传递?
答:是值传递,因为Java 编程语言只有值传递参数。 -
float f=3.4,是否正确?
答:不正确。精度不正确,应该用强制类型转换,改成:float f=(float)3.4 或float f = 3.4f -
单精度float和双精度double有什么区别?
答:单精度float存储空间为4个字节,双精度double存储空间为8个字节。同时由于存储空间的不同,导致了他们所能表示的数值范围也不同。 -
char 类型变量中能不能存储一个中文汉字,为什么?
答:可以。因为char类型变量被用来存储Unicode编码的字符,而Unicode编码字符集里就包含了汉字,所以char类型变量自然是可以存储汉字的。不过如果是个特殊的汉字,并没有被包含在Unicode编码字符集里,那char 类型变量就不能存储这个特殊汉字。 -
什么时候用断言(assert)?
答:断言功能是用于软件的开发和测试的,软件发布后,为了提高性能,断言功能通常是关闭的。也就是说即使删去了断言,程序的运行和结构都不应该有任何改变。
java基础面试题(七)
猜你喜欢
转载自blog.csdn.net/weixin_38106322/article/details/104147615
今日推荐
周排行