扫码关注官方订阅号
假如有一个Test类如下:
public class Test { public static void main(String[] args) { Test[] test = new Test[10]; } }
在main函数new一个类的数组,这时是怎么调用构造函数的?
业精于勤,荒于嬉;行成于思,毁于随。
此时还没调用构造函数
Test[] test = new Test[10]
只是说明test数组里面可以存放10个Test类型的对象,现在test数组里面的值都是null的
用这段代码试一下就知道了
public class Test { public static void main(String[] args) { Test[] test = new Test[10]; } public Test(){ System.out.println("Call Method"); } }
答案是没有调用构造方法
Test test = new Test(); 相当于: Test test; //p1 test = new Test(); //p2
首先 p1,创建 test,为 test 分配空间,此时不能使用该变量。 p2 中,先执行 new Test(),new 创建一个 Test 对象,为新建对象分配空间并默认初始化(二进制位置0),然后是显示初始化,就是类中属性的默认值,最后才是调用构造方法赋值。然后执行=,将对象赋给 test。
=
此时没有调用构造方法
微信扫码关注PHP中文网服务号
QQ扫码加入技术交流群
扫描下载App
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号
PHP学习
技术支持
返回顶部
此时还没调用构造函数
只是说明test数组里面可以存放10个Test类型的对象,现在test数组里面的值都是null的
用这段代码试一下就知道了
答案是没有调用构造方法
Test test = new Test();
相当于:
Test test; //p1
test = new Test(); //p2
首先 p1,创建 test,为 test 分配空间,此时不能使用该变量。
p2 中,先执行 new Test(),new 创建一个 Test 对象,为新建对象分配空间并默认初始化(二进制位置0),然后是显示初始化,就是类中属性的默认值,最后才是调用构造方法赋值。然后执行
=
,将对象赋给 test。此时没有调用构造方法