java,new与不new的区别?
来源:百度知道 编辑:UC知道 时间:2024/09/28 15:34:23
我就直接申明一个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()这个方法会加载这个类并创