在Java中初始化类实例

时间:2015-12-17 15:26:55

标签: java class object initialization

我已经看到了两种用Java初始化类的方法:

Class name = new Class();

Class name;
name = new Class();

这些有什么区别?它是偏好还是它们的工作方式有实际区别?

4 个答案:

答案 0 :(得分:3)

不是真的。可能存在第二个必要的实例,因为构造函数抛出异常。如果您需要在try / catch块之外使用名称,则需要先创建它。

Class name;

try {
    name = new Class();
} catch (Exception e) {
    do something
}

否则第一个效率更高。

答案 1 :(得分:2)

首先:两个代码片段都会这样做。第一个代码片段是第一个代码片段的缩写形式。

在某些情况下可以使用第二种方式:

  1. 您的构造函数会抛出任何异常。

    在这种情况下你会这样:

    Class name;
    try 
    {
        name = new Class();
    } 
    catch (Exception exp) 
    {
        exp.printStackTrace();
    }
    
  2. 您想以不同的方式初始化您的变量

    Class name;
    if(//check something)
    {
        name = new Class("example1");
    } 
    else
    {
        name = new Class("example1");
    }
    
  3. PS:只是一些有用的例子。还有很多其他方法可以使用它。

答案 2 :(得分:1)

他们的工作方式相同,但每个人都有时间和地点。你有充分的理由可以打破声明和实例化。您可能不需要实例化:您可能拥有不需要实例化对象的代码路径。

答案 3 :(得分:1)

班级名称; - >宣言 name = new Class(); - > Instanciation

使用instanciation为“name”对象保留内存。 所以基本上,在使用“new”关键字之前,不会保留任何内存。

您还可以检查生成的字节代码,您将发现JVM进行了优化,并为您的两个代码段提供相同的结果。