问题先放在这里,稍后我会做出解答

已知类有Test和Test2,问两次主程序的输出结果是多少(SerializeUtil只是序列化的工具类)

类Test

public class Test implements Serializable{
private static final long serialVersionUID = 1L;
private int num;
private transient String str; public Test(){
this.num = 0xFFFF;
this.str = "string";
} public Test(int num, String str) {
this.num = num;
this.str = str;
} @Override
public String toString() {
return num + ","+str;
}
}

类Test2

public class Test2 implements Externalizable,Serializable{
private static final long serialVersionUID = 1L;
private int num;
private transient String str; public Test2() {
this.num = 0xFFFF;
this.str = "hello";
} public Test2(int num, String str) {
this.num = num;
this.str = str;
} @Override
public void writeExternal(ObjectOutput out) throws IOException {
out.write(num);
} @Override
public void readExternal(ObjectInput in) throws IOException, ClassNotFoundException {
this.num = in.read();
} @Override
public String toString() {
return num + ","+str;
}
}

两个主程序:

    public static void main(String[] args) {
Test test = new Test();
File file = new File("d:/test.bin");
SerializeUtil.writeObject(file,test); Test test2 = (Test) SerializeUtil.readObject(file);
System.out.println(test);
System.out.println(test2);
}
    public static void main(String[] args) {
Test2 test2 = new Test2();
File file = new File("d:/test2.bin"); SerializeUtil.writeObject(file,test2);
Test2 t = (Test2) SerializeUtil.readObject(file); System.out.println(test2);
System.out.println(t);
}

附SerializeUtil的代码,可无视——

 public class SerializeUtil {

     public static void writeObject(File file,Object object){
FileOutputStream fileOutputStream = null;
try {
fileOutputStream = new FileOutputStream(file);
ObjectOutputStream objectOutputStream = new ObjectOutputStream(fileOutputStream);
objectOutputStream.writeObject(object);
objectOutputStream.flush();
}catch (IOException e){
e.printStackTrace();
}finally {
if(fileOutputStream!=null){
try {
fileOutputStream.close();
} catch (IOException e) {}
}
}
} public static Object readObject(File file){
FileInputStream fileInputStream = null;
try {
fileInputStream = new FileInputStream(file);
ObjectInputStream objectInputStream = new ObjectInputStream(fileInputStream);
return objectInputStream.readObject();
}catch (ClassNotFoundException|IOException e){
e.printStackTrace();
}finally {
if(fileInputStream!=null){
try {
fileInputStream.close();
} catch (IOException e) {}
}
}
return null;
} }

序列化工具类

答案如下:

/*
第一个主程序:
65535,string
65535,null
第二个主程序:
65535,hello
255,hello
*/

答案

一道关于java序列化的问题,看大家知多少————的更多相关文章

  1. java序列化,看这篇就够了

    一.序列化的含义.意义及使用场景二.序列化实现的方式1.Serializable1.1 普通序列化1.2 成员是引用的序列化1.3 同一对象序列化多次的机制1.4 java序列化算法潜在的问题1.5 ...

  2. 一文看懂Java序列化

    一文看懂Java序列化 简介 Java实现 Serializable 最基本情况 类的成员为引用 同一对象多次序列化 子父类引用序列化 可自定义的可序列化 Externalizable:强制自定义序列 ...

  3. 一文看懂Java序列化之serialVersionUID

    serialVersionUID适用于Java的序列化机制.简单来说,Java的序列化机制是通过判断类的serialVersionUID来验证版本一致性的.在进行反序列化时,JVM会把传来的字节流中的 ...

  4. Java 序列化Serializable详解

    Java 序列化Serializable详解(附详细例子) Java 序列化Serializable详解(附详细例子) 1.什么是序列化和反序列化Serialization(序列化)是一种将对象以一连 ...

  5. 关于java序列化中的一个细节

    java序列化机制的可以参考很多资料了,最近在看的时候发现了一些问题. 1. 默认的序列化机制,很多书里讲到序列化类只序列化类名,实例变量,不会实例化类变量(static)和瞬态变量(transien ...

  6. Java序列化格式详解

    RPC的世界,由于涉及到进程间网络远程通信,不可避免的需要将信息序列化后在网络间传送,序列化有两大流派: 文本和二进制. 文本序列化 序列化的实现有很多方式,在异构系统中最常用的就是定义成人类可读的文 ...

  7. 简述java序列化

      1. 什么是Java对象序列化     Java平台允许我们在内存中创建可复用的Java对象,但一般情况下,只有当JVM处于运行时,这些对象才可能存在,即,这些对象的生命周期不会比JVM的生命周期 ...

  8. Java序列化的几种方式以及序列化的作用

    Java序列化的几种方式以及序列化的作用 本文着重讲解一下Java序列化的相关内容. 如果对Java序列化感兴趣的同学可以研究一下. 一.Java序列化的作用    有的时候我们想要把一个Java对象 ...

  9. java序列化---转

    Java 序列化Serializable详解(附详细例子) 1.什么是序列化和反序列化Serialization(序列化)是一种将对象以一连串的字节描述的过程:反序列化deserialization是 ...

随机推荐

  1. 有意思的记录-python

    1.变量 类变量紧接在类名后面定义,相当于java和c++的static变量 实例变量在init里定义,相当于java和c++的普通变量 2.日期 #coding:utf-8 import time ...

  2. 【原】关于Python中setuptools安装的问题

    在生成package的时候,需要在setup.py中引入setuptools包,可是却报告如下错误: ImportError: No module named setuptools 解决办法就是下载s ...

  3. 基于Cat的分布式调用追踪

    Cat是美团点评出的一款APM工具,同类的产品也有不少,知名的开源产品如zipkin和pinpoint:国内收费的产品如oneapm.考虑到Cat在互联网公司的应用比较广,因此被纳入选型队列,我也有幸 ...

  4. MySql免安装版安装配置,附MySQL服务无法启动解决方案

          文首提要:             我下载的MySQL版本是:mysql-5.7.17-winx64.zip  Archive版:系统:Windows7 64位. 一.解压文件 下载好My ...

  5. Atitti 载入类的几种方法    Class.forName ClassLoader.loadClass  直接new

    Atitti 载入类的几种方法    Class.forName ClassLoader.loadClass  直接new 1.1. 载入类的几种方法    Class.forName ClassLo ...

  6. iOS 4s-6Plus屏幕自动适配及颜色转换为十六进制

    iOS各种屏幕自动适配及颜色转换为十六进制 ★★★XLJMatchScreen自动适配屏幕★★★ 支持pod导入 pod 'XLJScreenMatching', '~> 1.0.3' 如果发现 ...

  7. JavaScript权威设计--JavaScript语言核心(简要学习笔记一)

    1.对象名/值得映射 var book={ top:"a", fat:true }   2.访问对象属性 book.top book["fat"] 3.通过赋值 ...

  8. 小萝贝控机大师工具推荐(一款在PC就能控制手机界面的工具)

    在一次写博客的过程中,要截取手机app上的几张图片,然后粘贴到博客里面去,不了解这个工具的时候,我就从手机上截图(使用其他的截图app或者使用手机自己的截图功能),然后再传送到电脑上,然后再放到博文中 ...

  9. iOS冰与火之歌(番外篇) - 基于PEGASUS(Trident三叉戟)的OS X 10.11.6本地提权

    iOS冰与火之歌(番外篇) 基于PEGASUS(Trident三叉戟)的OS X 10.11.6本地提权 蒸米@阿里移动安全 0x00 序 这段时间最火的漏洞当属阿联酋的人权活动人士被apt攻击所使用 ...

  10. sql 分组取最新的数据sqlserver巧用row_number和partition by分组取top数据

    SQL Server 2005后之后,引入了row_number()函数,row_number()函数的分组排序功能使这种操作变得非常简单 分组取TOP数据是T-SQL中的常用查询, 如学生信息管理系 ...