Java 程序打印-1

Java 程序打印-1,java,Java,为什么要打印-1?您没有按顺序发言 当你写作时 public class Home { private static Home home = new Home(); private static int DEFAULT_NR_OF_ROOMS = 4; private final int rooms; public Home() { rooms = DEFAULT_NR_OF_ROOMS - 1; }

为什么要打印-1?

您没有按顺序发言

当你写作时

public class Home {

       private static Home home = new Home();
       private static int DEFAULT_NR_OF_ROOMS = 4;
       private final int rooms;

       public Home() {
          rooms = DEFAULT_NR_OF_ROOMS - 1;
       }

       public static void main(String[] args) {
          System.out.println(home.rooms);
       }

    }
在语句之前调用构造函数

   private static Home home = new Home();
因此,在执行构造函数时,默认值为0

要查看更改,请首先指定值,然后调用构造函数

 public Home() {
          rooms = DEFAULT_NR_OF_ROOMS - 1; // 0-1
       }
答案-1是正确的, 如果你想要答案是3,那么你的代码应该是

private static int DEFAULT_NR_OF_ROOMS = 4;
private static Home home = new Home();

在第一种情况下,答案为-1的原因是当语句private static Home=new Home时;执行时,默认的\u NR\u OF \u ROOMS值未指定为4,因为该语句位于构造函数行之后。因此,在将值分配给静态变量之前,默认的\u NR\u房间的默认int值为0。 所以在构造函数代码中,没有静态变量的值

将语句序列交换为

 private static int DEFAULT_NR_OF_ROOMS = 4;
 private static Home home = new Home();

然后您将得到答案为3,因为当调用构造函数时,静态变量已被赋值。

这是一个难题还是您遇到了问题?当然,您可以告诉我们它打印了什么。我们可以告诉你为什么。另外,你问题末尾的无效代码是关于什么的?新用户,新帐户,第一个问题来自你的家庭作业?你是真的吗,伙计?
 private static int DEFAULT_NR_OF_ROOMS = 4;
 private static Home home = new Home();
 private static int DEFAULT_NR_OF_ROOMS = 4;
 private static Home home = new Home();