假设有一个Student类,实现了Serializable接口,其中包含三个属性:String name,int age 和String major,其中age属性使用transient修饰。现在分别创建两个Student对象,s1和s2,它们的属性值都相同。然后将s1序列化到文件,之后又修改s1的属性,再将s2序列化到文件。最后分别从文件中反序列化出两个新的Student对象r1和r2,此时,r1和r2的age属性值分别是多少?
答案解析
A选项正确。由于age属性是transient的,s1序列化时不会写入age的值,因此反序列化得到的r1的age会是int类型的默认值0。s2序列化时也不会写入age的值,因此反序列化得到的r2的age也会是int类型的默认值0。B选项错误,transient属性不会被序列化,所以r1的age不会是s1修改后的值。C选项错误,r2的age不会是原始值,因为它是transient修饰的。D选项错误,r2的age不会是原始值,因为它是transient修饰的,并且它是一个独立于r1进行序列化的对象。
正确答案:A