第一种是定义一个实例变量 没有真正的实例化 ,当
test = new Test();才可以使用它,否则会报错的
第二中也是一样,不同的是定义的同时也实例化,你完全可以不用
test = new Test();这句它也不会报仇
所以一般在定义个实例变量的时候都要先将其初始化
最终的结果应该都是一样的。第二种写法就是先在栈空间建立一个临时变量test并且没有指向任何对象。之后,在堆空间建立一个Test()对象,并将test指向它。第一种的过程我不是特别清楚,可能是一样的。
这个你要看你放的位置了,比如你放在主函数或者局部变量里面第一种写法的第一句是会报错的,因为你test没有初始化。而常见情况是做为全局变量,即Test test;这里java会隐式赋值Null给它。如果int 则为0之类,不信你可以用system.out.println(object);测试看看。所以说这两类没什么不同,一个新的对象要初始化,只不过一个是你主动,一个是隐式。只不过你没看到。不理解多用测试语句测试然后多看看书。
没有额