-1

提供的代码应该计算创建的对象。

我希望它能够创建三个对象和一个要打印count的对象。3

这只会打印出 1。我认为是因为对象名称Number_Objects obj在所有三种方法中都是相同的。如何更改程序以使其返回3(创建三个对象)?

public class Number_Objects {
    static int count = 0;

    Number_Objects() {
        count++;
    }

    public void Number_Objectstest1() {
        Number_Objects obj = new Number_Objects();
    }

    public void Number_Objectstest2() {
        Number_Objects obj = new Number_Objects();
    }

    public void Number_Objectstest3() {
        Number_Objects obj = new Number_Objects();
    }

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

2 回答 2

1

您提供的代码基本上只打印文本。特别是,它不会输出1,它会输出0

这是因为您正在更新count类的构造函数中的变量(顺便说一句,它的名字很糟糕。请查看 Java 中的命名方案),但是,构造函数永远不会被调用,因为您没有创建实例。

要接收结果三,您需要创建该类的三个实例:

public static void main(String[] args) {
    Number_Objects one = new Number_Objects();
    System.out.println( Number_Objects.count ); // --> 1

    Number_Objects two = new Number_Objects();
    System.out.println( Number_Objects.count ); // --> 2

    Number_Objects three = new Number_Objects();
    System.out.println( Number_Objects.count ); // --> 3
}

每个都new将为创建的类的实例分配内存并调用适当的构造函数,匹配您提供的参数。

于 2020-10-09T20:45:16.690 回答
0

您正在方法内创建一个对象。但是您没有执行该函数,这意味着该对象尚未创建。在 main 方法中调用您的方法。

PS Java != JavaScript

class NumberObjects {

  static int count = 0;

  NumberObjects() {
      count++;
  }

  public static void NumberObjectstest1() {
      NumberObjects obj = new NumberObjects();
  }

  public static void NumberObjectstest2() {
      NumberObjects obj = new NumberObjects();
  }

  public static void NumberObjectstest3() {
      NumberObjects obj = new NumberObjects();
  }

  public static void main(String[] args) {
      NumberObjectstest1();
      NumberObjectstest2();
      NumberObjectstest3();
      System.out.println(count);
  }
}
于 2020-10-09T20:43:02.007 回答