Java对象是在什么时候创建的?
我们都知道,创建 java 类对象的方式: new + 类的构造方法(可能是有参构造或者无参构造)!
在大多数初学者眼中,执行构造方法就是创建实例,其实不然。这一点可以从 this 关键字来看出:
public class User{
public User(){
this.test(); //标记
}
public void test(){
System.out.print("正在执行构造方法...");
}
}
从以上代码中我们可以看出:当构造方法执行到注释标记处,我们使用了 this 关键字,而 this 的作用就是是指代构造方法执行时的当前类实例,也就是说==在构造方法执行之前,实例已经被创建了==!所以类实例或者说类对象并不是构造方法创建的,而是new关键字来创建的。而==构造方法的作用其实是初始化实例==,这一点我们从带参的构造方法中可以看出:
public class User{
private String name;
private int age;
public User(String name ,int age){
this.name = name;
this.age = age;
this.test(); //标记
}
public void test(){
System.out.print("正在执行构造方法...");
}
}
所以,类对象是在执行构造方法前已经被创建,而构造方法的作用就是初始化对象!
new是如何创建对象的
在Java中,new操作符的本意是分配内存,new一个类就是把这个类实例化为对象。
程序执行到new操作符时,会根据new后面的类型分配相应的内存空间。接着调用构造函数,填充对象的各个域(这一步叫做对象的初始化)。构造方法返回后,一个对象创建完毕,就可以把他的引用(地址)发布到外部,在外部就可以使用这个引用操纵这个对象。
参考:
本文是原创文章,采用 CC BY-NC-ND 4.0 协议,完整转载请注明来自 程序员小航
评论
匿名评论
隐私政策
你无需删除空行,直接评论以获取最佳展示效果