创建像
这样的对象有什么区别OverFlow a = new OverFlow();
OverFlow a;
答案 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();
实际上分配了存储变量所需的内存并为其调用构造函数