zoukankan      html  css  js  c++  java
  • 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("写入完毕!");
            
        }
    
    }
  • 相关阅读:
    QTableView表格控件区域选择-自绘选择区域
    Qt高仿Excel表格组件-支持冻结列、冻结行、内容自适应和合并单元格
    QRowTable表格控件(三)-效率优化之-合理使用QStandardItem
    QRowTable表格控件(二)-红涨绿跌
    QRowTable表格控件-支持hover整行、checked整行、指定列排序等
    Qt实现表格控件-支持多级列表头、多级行表头、单元格合并、字体设置等
    Asp.net MVC利用Ajax.BeginForm实现bootstrap模态框弹出,并进行前段验证
    Bootstrap:弹出框和提示框效果以及代码展示
    Bootstrap treeview增加或者删除节点
    bootstrap-treeview 如何实现全选父节点下所有子节点及反选
  • 原文地址:https://www.cnblogs.com/Lizhichengweidashen/p/13416635.html
Copyright © 2011-2022 走看看