如何创建对象是学习java语言的第一步,对于java入门而言,对象的使用绝对是一等一重要的,下面我们就来了解下对象的创建是怎么实现的。
实例:
package com.module; public class User implements Cloneable { private String userName; private int age; private String addr; public User() {} public User(String u, int a, String addr) { this.userName = u; this.age = a; this.addr = addr; } public String getUserName() { return userName; } public void setUserName(String userName) { this.userName = userName; } public int getAge() { return age; } public void setAge(int age) { this.age = age; } public String getAddr() { return addr; } public void setAddr(String addr) { this.addr = addr; } @Override public String toString() { return "User [userName=" + userName + ", age=" + age + ", addr=" + addr + "]"; } public static void main(String[] args) { //创建对象方式1:使用new关键字 User u1 = new User("1", 2, "3"); System.err.println(u1.toString()); //创建对象方式2:使用反射 //发射方式创建对象要求被创建的对象编写空构造 try { User u2 = User.class.newInstance(); System.err.println(u2.toString()); } catch (InstantiationException | IllegalAccessException e) { System.out.println("反射创建失败" + e.getMessage()); } //使用clone方法创建对象:要求被创建或者被克隆的对象实现Cloneable接口 //(3)是在内存上对已有对象的影印,所以不会调用构造函数 try { User u3 = (User) u1.clone(); System.err.println("u3:" + u3.toString()); System.out.println(u1 == u3); //false } catch (CloneNotSupportedException e) { System.out.println("克隆创建失败" + e.getMessage()); } //运用反序列化手段,调用java.io.ObjectInputStream对象的 readObject()方法 //该方法是从文件中还原类的对象,也不会调用构造函数。 } }
流程:
1、当我们创建User类的对象或调用其静态成员变量或静态方法时,java编译器会先定位User.class
2、这时java装载机ClassLoader会加载User.class,初始化其静态成员变量。所以,静态成员变量只会在Class首次被装载时初始化一次
3、可以通过new User()创建对象,此时会在堆区域为其分配存储空间
4、找个存储空间会被清零,自动为User对象的成员变量设置默认值(基本类型成员变量,如int会被赋值0),如若有引用,设置为null
5、开始执行成员变量的初始化
6、调用构造方法,最后完成类的完整初始化
以上就是本篇文章的所有内容,小伙伴们了解了吗?更多java常见问题及解决方法敬请关注奇Q工具网了解详情噢。
推荐阅读: