Java中创建对象的5种方式

太阳城安卓手机APP开户网登入:1.使用new关键字

package com.zmy.java.object;

public class Student{
??? private String name;
??? private Integer age;

??? public Student() {
??????? System.out.println("无参构造方法!");
??? }

??? public Student(String name, Integer age) {
??????? this.name = name;
??????? this.age = age;
??????? System.out.println("有参构造方法!");
??? }

??? public String getName() {
??????? return name;
??? }

??? public void setName(String name) {
??????? this.name = name;
??? }

??? public Integer getAge() {
??????? return age;
??? }

??? public void setAge(Integer age) {
??????? this.age = age;
??? }

??? @Override
??? public String toString() {
??????? return "Student{" +
??????????????? "name='" + name + '\'' +
??????????????? ", age=" + age +
??????????????? '}';
??? }
?? ?
??? public static void main(String[] args) {
??????? /* 方式一,通过new关键字创建对象 */
??????? Student student = new Student();
??????? student.setName("小明");
??????? student.setAge(15);
??????? System.out.println(student.toString());
??????? }
}

代码执行结果:

执行结果分析:

Student类实现了Serializable接口后才可以被序列化!编译器先将代码序列化到文件中,java默认序列化后的文件后缀为.ser。然后,反序列化操作后得到Student对象。

反序列化时并不会调用Student类的无参或有参构造方法!

? ?如果不想实例化对象的某个成员变量,可以在成员变量前使用transient关键字!则该字段不会被序列化!

示例:

????????public class Student implements Serializable {
??? ????private String name;
??? ????private transient Integer age;

????对于 JVM 可以反序列化对象,太阳城安卓手机APP开户网登入:它必须是能够找到字节码的类。如果JVM在反序列化对象的过程中找不到该类,则抛出一个 ClassNotFoundException 异常。

? ?注意,readObject() 方法的返回值被转化成 Student引用。