我已经看到了两种用Java初始化类的方法:
Class name = new Class();
或
Class name;
name = new Class();
这些有什么区别?它是偏好还是它们的工作方式有实际区别?
答案 0 :(得分:3)
不是真的。可能存在第二个必要的实例,因为构造函数抛出异常。如果您需要在try / catch块之外使用名称,则需要先创建它。
Class name;
try {
name = new Class();
} catch (Exception e) {
do something
}
否则第一个效率更高。
答案 1 :(得分:2)
首先:两个代码片段都会这样做。第一个代码片段是第一个代码片段的缩写形式。
在某些情况下可以使用第二种方式:
您的构造函数会抛出任何异常。
在这种情况下你会这样:
Class name;
try
{
name = new Class();
}
catch (Exception exp)
{
exp.printStackTrace();
}
您想以不同的方式初始化您的变量
Class name;
if(//check something)
{
name = new Class("example1");
}
else
{
name = new Class("example1");
}
PS:只是一些有用的例子。还有很多其他方法可以使用它。
答案 2 :(得分:1)
他们的工作方式相同,但每个人都有时间和地点。你有充分的理由可以打破声明和实例化。您可能不需要实例化:您可能拥有不需要实例化对象的代码路径。
答案 3 :(得分:1)
班级名称; - >宣言 name = new Class(); - > Instanciation
使用instanciation为“name”对象保留内存。 所以基本上,在使用“new”关键字之前,不会保留任何内存。
您还可以检查生成的字节代码,您将发现JVM进行了优化,并为您的两个代码段提供相同的结果。