• 2021-04-14
    一. IO操作问题描述程序功能:在网络传输过程中,对象数据往往需要进行序列化操作,即将对象序列化为byte数组,同时也需要反序列化操作将byte数组转化为对象。下面程序中定义了一个Student类,在该类中已经实现了反序列化操作,请完成序列化的操作代码。程序结构如下:import java.io.*;class Student{int stuNo;//学号String name;//姓名String sex;//性别int age;//年龄String grade;//年级String classname;//班级public Student(int stuNo,String name,String sex,int age,String grade,String classname){this.stuNo=stuNo;this.name=name;this.sex=sex;this.age=age;this.grade=grade;this.classname=classname;}//反序列化操作public static Student GetStudent(byte[] byteStudent){try{ByteArrayInputStream bais=new ByteArrayInputStream(byteStudent);DataInputStream dis=new DataInputStream(bais);int stuNo=dis.readInt();String name=dis.readUTF();String sex=dis.readUTF();int age=dis.readInt();String grade=dis.readUTF();String classname=dis.readUTF():return new Student(stuNo,name,sex,age,grade,classname);}catch(Exception ex){return null;}//序列化操作,请完成public byte[] GetBytes(){... //补充此处代码}public class Exam2{public static void main(String args[]){Student stu=new Student(20090223,”jack”,”man”,21,”三年级”,”2班”);byte[] bytestu=stu.GetBytes();Student stu1=Student.GetStudent(bytestu);System.out.println(stu1.s5uNo);}程序要求1. 实现序列化代码
  • public class Student {int stuNo;// 学号String name;// 姓名String sex;// 性别int age;// 年龄String grade;// 年级String classname;// 班级public Student(int stuNo, String name, String sex, int age, String grade,String classname) {this.stuNo = stuNo;this.name = name;this.sex = sex;this.age = age;this.grade = grade;this.classname = classname;}// 反序列化操作public static Student GetStudent(byte[] byteStudent) {try {ByteArrayInputStream bais = new ByteArrayInputStream(byteStudent);DataInputStream dis = new DataInputStream(bais);int stuNo = dis.readInt();String name = dis.readUTF();String sex = dis.readUTF();int age = dis.readInt();String grade = dis.readUTF();String classname = dis.readUTF();return new Student(stuNo, name, sex, age, grade, classname);} catch (Exception ex) {}return null;}// 序列化操作,请完成public byte[] GetBytes() {// 补充此处代码try{ByteArrayOutputStream baos=new ByteArrayOutputStream();DataOutputStream dos=new DataOutputStream(baos);dos.writeInt(stuNo);dos.writeUTF(name);dos.writeUTF(sex);dos.writeInt(age);dos.writeUTF(grade);dos.writeUTF(classname);return baos.toByteArray();}catch(Exception e){e.printStackTrace();}return null;}}public class Exam2 {public static void main(String args[]) {Student stu = new Student(20090223, "jack", "man", 21, "三年级", "2班");byte[] bytestu = stu.GetBytes();Student stu1 = Student.GetStudent(bytestu);System.out.println(stu1.stuNo);}}

    举一反三

    内容

    • 0

      在C#中,下列结构或者类定义正确的是(选一项) A: public struct Person{ string name; int age; public void ShowName(){ Console.WriteLine(name); }} B: public struct Person{ string name; int age; public Person(){ Conssole.WriteLine(name); }} C: public class Person{ string name; int age; public Person(){ Conssole.WriteLine(name); }} D: public class Person{ string name; int age; public Person(string name){ Conssole.WriteLine(name); }}

    • 1

      (6-2)定义如下Person类,(1)处合理的代码是。 class Person { String name, department; int age; public Person(String n) { name = n; } public Person(String n, int a) { name = n; age = a; } public Person(String n, int a, String d) { ① department = d; } }

    • 2

      有如下类的定义,创建Employee对象错误的是() public class Employee{ private int age; private String name; public Employee(int age){ this.age = age; } public Employee(String name){ this.name = name; } public Employee(int age,String name){ this(age); this.name = name; } } A: Employee emp = new Employee(10); B: Employee emp = new Employee("Tom"); C: Employee emp = new Employee(); D: Employee emp = new Employee(10,"Tom");

    • 3

      以下自定义数据类型的语句中,正确的是 A: A.Type student ID As String * 20 name As String * 10 age As Integer End student B: B.Type student ID As String * 20 name As String * 10 age As Integer End Type C: C.Type student ID As String name As String age As Integer End student D: C.Type ID As String * 20 name As String * 10 age As Integer End Type student

    • 4

      已知函数getStudent()定义为public Student getStudent(int ID),下列四个选项中可以与getStudent构成重载的方法是 A: private Student getStudent(int ID) B: public String getStudent(int ID) C: Student getStudent(String name) D: public Student get(int ID)