Java暑期学习第二十七天日报

一、今日学习的内容:

今日学习了12.2.5Scanner类和12.2.6序列化与反序列化的内容。

二、遇到的问题:

 无。

三、明日计划:

明天计划学习12.2.7打印流的内容和12.2.8Random AccessFile随机访问文件的内容。

 

今天学习的具体内容:

 

1.Scanner类

Scanner类主要用来从键盘输入数据,其中该类是在Java.util包中定义的的。

实例——Scanner类的应用

import java.util.Scanner;
public class ScannerDemo {
    public static void main(String[] args) {
        Scanner con=new Scanner(System.in);
        String s=con.nextLine();
        int a=con.nextInt();
        double d=con.nextDouble();
        System.out.println(s);
        System.out.println(a);
        System.out.println(d);
        con.close();
    }

}

测试截图:

 

 

2.对象序列化和反序列化

(1)序列化

定义:就是将一个在内存中保存的对象变成一个二进制数据流进行传输。如果一个对象需要被序列化则对象所在的类必须实现Serializable接口,此接口中没有任何的方法定义,是作为标识接口出现的。

实例——将实体类标注为可以序列化

import java.io.Serializable;
public class SerializableDemo implements Serializable{
    String name;
    int age;
    public String getName() {
        return this.name;
    }
    public int getAge() {
        return this.age;
    }
    public void setName(String name) {
        this.name=name;
        
    }
    public void setAge(int age) {
        this.age=age;
    }
    public String toString() {
        return "姓名:"+name+" 年龄:"+age;
    }

}



import java.io.IOException;
import java.io.FileOutputStream;
import java.io.ObjectOutputStream;
public class ObjectOutputStreamDemo {
    public static void main(String[] args) throws IOException{
        ObjectOutputStream oos=new ObjectOutputStream(new FileOutputStream("D:\\people.txt"));
        SerializableDemo s=new SerializableDemo();
        s.setAge(18);
        s.setName("张三");
        oos.writeObject(s);
        oos.close();
        System.out.println("写入完毕!");
    }

}

 

 

(2)反序列化

反序列化是将文件中读取对象的过程,使用ObjectInputStream可以实现反序列化。

import java.io.Serializable;
public class SerializableDemo implements Serializable{
    String name;
    int age;
    public String getName() {
        return this.name;
    }
    public int getAge() {
        return this.age;
    }
    public void setName(String name) {
        this.name=name;
        
    }
    public void setAge(int age) {
        this.age=age;
    }
    public String toString() {
        return "姓名:"+name+" 年龄:"+age;
    }

}

import java.io.IOException;
import java.io.FileInputStream;
import java.io.ObjectInputStream;
public class ObjectInputStreamDemo {
    public static void main(String[] args)throws IOException, ClassNotFoundException{
        ObjectInputStream ois=new ObjectInputStream(new FileInputStream("D:\\people.txt"));
        SerializableDemo S=(SerializableDemo)ois.readObject();
        ois.close();
        System.out.println(S);
    }

}

测试截图:

 

(3)序列化一组对象

若想序列化多个对象,可以使用数组解决。

实例——序列化多个对象

import java.io.Serializable;
public class SerializableDemo implements Serializable{
    String name;
    int age;
    public String getName() {
        return this.name;
    }
    public int getAge() {
        return this.age;
    }
    public void setName(String name) {
        this.name=name;
        
    }
    public void setAge(int age) {
        this.age=age;
    }
    public String toString() {
        return "姓名:"+name+" 年龄:"+age;
    }

}

import java.io.IOException;
import java.io.ObjectOutputStream;
import java.io.FileOutputStream;
public class ObjectOutputStreamDemo2 {
    public static void main(String[] args) throws IOException{
        ObjectOutputStream oos=new ObjectOutputStream(new FileOutputStream("D:\\people.txt"));
        SerializableDemo s1=new SerializableDemo();
        s1.setAge(18);
        s1.setName("张三");
        SerializableDemo s2=new SerializableDemo();
        s2.setAge(43);
        s2.setName("李四");
        SerializableDemo []ss= {s1,s2};
        oos.writeObject(ss);
        oos.close();
        System.out.println("写入完毕!");
        
    }

}

 

posted on 2020-08-01 21:23  桑榆非晚柠月如风  阅读(81)  评论(0编辑  收藏  举报