java,new与不new的区别?

来源:百度知道 编辑:UC知道 时间:2024/09/28 15:34:23
我有一个A类,在B类里声明一个A类,但我不用 A a=new A();

我就直接申明一个A的属性方B类里面,请问这样有什么区别?

我就直接申明一个A的属性方B类里面,请问这样有什么区别?

这两者没有可比性,楼主的意思很明白

class B {
public A a;
}

与 A a = new A();

前者,a 是 B类的属性
当 B b = new B()的时候,a并没有分配空间,也就是说
b.a == null is true

除非这样写:
class B {
public A a=new A();
}

A a;
//对象的声明,如果你不new就用a,会报空指针异常(NullpointException)

A a=new A();
已经在堆里开辟了内存。记住:没有new的对象是不能用的!!!

·使用下列语法可创建对象:
new 构造函数

·关键字 new 通常称为创建运算符,用于分配对象内存,并将该内存初始化为缺省值。

·一旦 new 完成分配和初始化内存,它就将调用构造函数来执行对象初始化。

你是说
A a;
和A a=new A();
的区别吧?

一个 是创建了A的引用 但没分配内存空间、、

一个是既分配的引用也创建了内存地址 把引用指向该内存

在java中,new用来开辟堆内存,又叫初始化,一般情况下,对象创建好后,都需要用new进行实例化;不用new通常在单例模式中可见,对象在类里面创建,构造函数用private修饰,外面不能创建对象,只能调用内部方法静态方法,即对象的初始化在创建对象时已经完成
一般来说,不使用new的情况都属于一些特定的情况,比如:
1.
Class clas = Class.forName(“NewClass”);
NewClass obj = (NewClass) clas.newInstance();
- Class.forName()这个方法会加载这个类并创