以这两种方式创建对象有什么不同

时间:2012-04-27 18:45:20

标签: java

创建像

这样的对象有什么区别
OverFlow a = new OverFlow();

OverFlow a;

8 个答案:

答案 0 :(得分:2)

在第二种情况下,没有创建对象。 <{1}}变量保持未初始化状态。

答案 1 :(得分:1)

OverFlow a

bit在两种情况下具有相同的含义:它创建一个名为a的变量,该变量存储对类OverFlow(或子类)的实例的引用。

在第一种情况下,创建一个新对象,并初始化引用以指向该对象。

在第二种情况下,引用未初始化并保持null

答案 2 :(得分:1)

OverFlow a;

等于

OverFlow a = null;

答案 3 :(得分:0)

new OverFlow();

确实创建了一个OverFlow类的实例,而

OverFlow a;

只是一个声明。

答案 4 :(得分:0)

在第一个中,“a”具有新构造的OverFlow对象的值。

在第二个中,它为空。

答案 5 :(得分:0)

当您创建一个对象而不将其定义为新对象时,它将不会被初始化(也不会调用构造函数。)。您应该只使用第二个版本在try-catch-block中创建对象。

答案 6 :(得分:0)

OverFlow a;不会创建对象(即您可以使用的实例)。它仅定义类型为a的变量OverFlow,但会将其分配给null。如果您尝试使用它,则会出现NullPointerException。根据您的编译器,它也很可能会给您一个“未初始化”变量警告。

OverFlow a = new OverFlow();做同样的事情,除了它使一个准备好使用的实际对象(非null)。

答案 7 :(得分:0)

基本上,

OverFlow a;

告诉编译器,“最终会有一个类型溢出的变量,所以要为它做好准备。”

OverFlow a = new Overflow();

实际上分配了存储变量所需的内存并为其调用构造函数