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

importjava.* importjava.*     2022-08-13     207

关键词:

 

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

 

已知类有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的代码,可无视——

 1 public class SerializeUtil {
 2 
 3     public static void writeObject(File file,Object object){
 4         FileOutputStream fileOutputStream = null;
 5         try {
 6             fileOutputStream = new FileOutputStream(file);
 7             ObjectOutputStream objectOutputStream = new ObjectOutputStream(fileOutputStream);
 8             objectOutputStream.writeObject(object);
 9             objectOutputStream.flush();
10         }catch (IOException e){
11             e.printStackTrace();
12         }finally {
13             if(fileOutputStream!=null){
14                 try {
15                     fileOutputStream.close();
16                 } catch (IOException e) {}
17             }
18         }
19     }
20 
21     public static Object readObject(File file){
22         FileInputStream fileInputStream = null;
23         try {
24             fileInputStream = new FileInputStream(file);
25             ObjectInputStream objectInputStream = new ObjectInputStream(fileInputStream);
26             return objectInputStream.readObject();
27         }catch (ClassNotFoundException|IOException e){
28             e.printStackTrace();
29         }finally {
30             if(fileInputStream!=null){
31                 try {
32                     fileInputStream.close();
33                 } catch (IOException e) {}
34             }
35         }
36         return null;
37     }
38 
39 }
序列化工具类

 

答案如下:

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

 

这些芯片知识,你知多少

...牛了,所以分享给大家。点这里可以跳转到教程。”关于芯片,我想大家应该不陌生,因为这两年有关芯片的话题经常登上各大媒体的热搜榜。我们听到最多的就是芯片短缺ÿ 查看详情

这些芯片知识,你知多少

...牛了,所以分享给大家。点这里可以跳转到教程。”关于芯片,我想大家应该不陌生,因为这两年有关芯片的话题经常登上各大媒体的热搜榜。我们听到最多的就是芯片短缺ÿ 查看详情

这些芯片知识,你知多少

...牛了,所以分享给大家。点这里可以跳转到教程。”关于芯片,我想大家应该不陌生,因为这两年有关芯片的话题经常登上各大媒体的热搜榜。我们听到最多的就是芯片短缺ÿ 查看详情

css知多少——float下篇(转)

...们分上、下两篇来介绍,上篇已经写完,这是下篇。建议大家先把上篇看了,再来看下文,精彩内容不要掠过啊。1.清除float  《上篇》中我们提到,float具有“破坏性”,它会导致父元素“坍塌”,这将不是所要看到的。如何... 查看详情

从一道ctf看php反序列化漏洞的应用场景(代码片段)

目录0x00first0x01我打我自己之---序列化问题0x02[0CTF2016]piapiapia0x00first前几天joomla爆出个反序列化漏洞,原因是因为对序列化后的字符进行过滤,导致用户可控字符溢出,从而控制序列化内容,配合对象注入导致RCE。刚好今天刷CTF题... 查看详情

typescriptinterfacevstype知多少(代码片段)

...二者可以互换。在写TS的时候,想必大家都问过自己这个问题,我到底应该用哪个呢?希望看完本文会给你一个答案。知道什么时候应该用哪个,首先应该了解二者之间的相同点和不同点,再做出选择。接口vs类型别名相同点1.都... 查看详情

java继承知多少,本文详细告诉你

...是一种面向对象的编程语言,每当我们提到Java的特性,大家一定会在脑海里浮现出Java中的​继承、多态以及封装​。我们在日常的开发中经常会用到这三种特性,本文首先给大家介绍这三大特性之一——继承。1.1继承的实现​... 查看详情

前端安全知多少

说到安全,大家脑海浮现的一定是这种场景。他们噼噼啪啪敲几行代码,就能控制对方电脑于千里之外,酷到没朋友。但这些似乎离前端还挺远的。常常听到什么SQL注入,缓冲区溢出,DDoS,CC攻击,好像和前端也没啥关系,渐渐... 查看详情

关于java序列化的问题你真的会吗?

引言在持久化数据对象的时候我们很少使用Java序列化,而是使用数据库等方式来实现。但是在我看来,Java序列化是一个很重要的内容,序列化不仅可以保存对象到磁盘进行持久化,还可以通过网络传输。在平时的面试当中,序... 查看详情

关于java序列化的问题你真的会吗?

引言在持久化数据对象的时候我们很少使用Java序列化,而是使用数据库等方式来实现。但是在我看来,Java序列化是一个很重要的内容,序列化不仅可以保存对象到磁盘进行持久化,还可以通过网络传输。在平时的面试当中,序... 查看详情

博弈论,你知多少

...发现了一个巨牛的人工智能教程,忍不住分享一下给大家。教程不仅是零基础,通俗易懂,而且非常风趣幽默,像看小说一样!觉得太牛了,所以分享给大家。点这里可以跳转到教程。”在《从“名将之路... 查看详情

博弈论,你知多少

...发现了一个巨牛的人工智能教程,忍不住分享一下给大家。教程不仅是零基础,通俗易懂,而且非常风趣幽默,像看小说一样!觉得太牛了,所以分享给大家。点这里可以跳转到教程。”在《从“名将之路... 查看详情

关于函数,你知多少?

我们都知道,JS中没有的类的概念。而函数则是JS中很重要,很重要,很重要的一点。理解函数也是非常有必要的。先来看看函数的定义。如下:1//函数声明2//函数声明不会立即调用,可以在你需要的时候调用它3functiondemo(){45}67//... 查看详情

关于java输出的一道题(代码片段)

今天在我的后宫群看到了一道有意思的java题,分享一下题目是这样的看到第一眼,反应:重载输出println也能重载?据说正常反应应该是在method中输出然后直接退出,果然是自己智商不够既然不确定,那就StackOverflow一下,找了找... 查看详情

这些芯片知识,你知多少

...牛了,所以分享给大家。点这里可以跳转到教程。”关于芯片,我想大家应该不陌生,因为这两年有关芯片的话题经常登上各大媒体的热搜榜。我们听到最多的就是芯片短缺,某某行业或某某公司又受了影响。与... 查看详情

http协议知多少-关于http1.xhttp2spdy的相关知识

作为网站开发的基础协议,我们知道浏览器上都有输出http这四个字母,这意味着什么呢?这就是最基础的HTTP协议。 逐浪君今天为各位大人准备了一些HTTP技术的知识,来和大家分享。 以下图为例: 这一个加载界面,... 查看详情

http协议知多少-关于http1.xhttp2spdy的相关知识

作为网站开发的基础协议,我们知道浏览器上都有输出http这四个字母,这意味着什么呢?这就是最基础的HTTP协议。 逐浪君今天为各位大人准备了一些HTTP技术的知识,来和大家分享。 以下图为例: 这一个加载界面,... 查看详情

5g应用发展情况,你知多少

...发现了一个巨牛的人工智能教程,忍不住分享一下给大家。教程不仅是零基础,通俗易懂,而且非常风趣幽默,像看小说一样!觉得太牛了,所以分享给大家。点这里可以跳转到教程。”最近我在网上看到... 查看详情