Java 应该如何分辨 创建对象与定义对象变量的区别(如图中的题目)

图片说明

 Y b = new Y(); 既是定义对象也是创建对象。
它相当于
Y b; //定义
b = new Y(); //创建
写在一起。

可以在定义成员变量的时候初始化
class X {
T b = new Y();
X() {
System.out.print("X");
}
}
其实相当于
class X {
T b;
X() {
b = new Y(); //实际上编译器把b的初始化放在构造函数里
System.out.print("X");
}
}

可以在任何方法中创建对象,而不是一定在main

主要是拆分这两个步骤,先在堆上申请一个对象,它会调用Y的构造函数生成,然后生成成员变量y,它是引用类型引用刚刚熊申请的堆上对象。同时系统会根据y来决定什么时候进行gc,回收堆上对象。

1、在new一个类的对象时,会自动调用类的相应参数的构造方法。
2、如果new的类的对象中有其它类的对象,那么在new这个类的同时,也会执行这段代码(在构造函数中执行)。如果其它类的对象是new的话也会触发相应参数的构造方法。

声明一个对象的时候就是创建对象

定义对象变量就是声明实例

java里面一切都是对象,除了基本类型(当然JDK5后自动拆箱装箱也就把基本类型和对象联系起来了),不管怎么样在使用前都必须拥有这个对象,至于你是new还是只是声明这个类型的变量,看你自己需要了。不一定说非得在main方法里面new对象!