有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

在Java中初始化类实例

我见过两种在Java中初始化类的方法:

Class name = new Class();

Class name;
name = new Class();

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


共 (4) 个答案

  1. # 1 楼答案

    不是真的。在某些情况下,可能需要第二个,因为构造函数会引发异常。如果需要在try/catch块之外使用name,则需要首先创建它

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

    否则,第一种方法更有效

  2. # 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. # 3 楼答案

    它们的工作原理相同,但都有时间和地点。有充分的理由,您可以分解声明和实例化。您可能不需要实例化:您可能有不需要实例化对象的代码路径

  4. # 4 楼答案

    类名-&燃气轮机;公告 name=新类()-&燃气轮机;实例

    内存是为具有实例的“name”对象保留的。 所以基本上,在使用“new”关键字之前不会保留内存

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