关于java声明对象的问题

来源:百度知道 编辑:UC知道 时间:2024/06/23 01:01:38
比如我有一个类A,我在main函数中声明了一个对象 A ;下面这两条语句的区别是什么?
A a=null;
A a=new A();
还有一个疑问,在编译阶段类的行为是什么,类在什么时候被载入?

A a;和A a=null;是一样的。。
a只是个名字,new A()在内存中创建了一个对象。。然后a代表这个对象。。意思就是a是个指针。。java其实有指针,不过不允许操作,并且换了个名字叫“句柄”

类的载入顺序:
父类--静态变量
父类--静态初始化块
子类--静态变量
子类--静态初始化块
父类--变量
父类--初始化块
父类--构造器
子类--变量
子类--初始化块
子类--构造器

第一个只是声明一个A类的引用,指向null说明什么都没有引用,并没有建立对象.使用前需要重新a=new A();或者是把a指向一个现成的A类对象.
第二个在内存中建立了一个A类的对象并被变量a引用.

打个比方,a就是一个电视遥控器,newA()就是一个具体的电视。
第一一句是你拿了个遥控器,但是没有跟任何一个电视对应起来,所以怎么按遥控都没用。
第二句就是你把一个遥控器和一台电视对应起来了,所以就能使用了。

A a=null;//仅仅声明,若想使用还需初始化
A a=new A();//已经初始化了对象

好像第二个是创建一个实例.....
而第一个虽然是声明了...却不会分配内存空间的....