增加1并将其与每个创建的对象一起添加?

class MyObject { static int instanceCounter = 0; static int counter = 0; MyObject() { instanceCounter++; counter = counter + 1; } } 

我使用静态int来获取此输出:

对象1:5的instanceCounter的值

instanceCounter for MyObject的值:5

对象1:1的计数器值

对象2:2的计数器值

对象3:3的计数器值

对象4:4的计数器值

对象5:5的计数器值

但它的显示

对象1:5的instanceCounter的值

instanceCounter for MyObject的值:5

对象1:5的计数器值

对象2:5的计数器值

对象3:5的计数器值

对象4:5的计数器值

对象5:5的计数器值

我的跑步者class

 class RunMyObject { public static void main(String[] args) { MyObject Object1 = new MyObject(); MyObject Object2 = new MyObject(); MyObject Object3 = new MyObject(); MyObject Object4 = new MyObject(); MyObject Object5 = new MyObject(); System.out.println(“Value of instanceCounter for Object 1: ” + Object1.instanceCounter); System.out.println(“Value of instanceCounter for MyObject: ” + MyObject.instanceCounter); System.out.println(“Value of Counter for Object 1: ” + Object1.counter); System.out.println(“Value of Counter for Object 2: ” + Object2.counter); System.out.println(“Value of Counter for Object 3: ” + Object3.counter); System.out.println(“Value of Counter for Object 4: ” + Object4.counter); System.out.println(“Value of Counter for Object 5: ” + Object5.counter); } } 

如果我删除静态,这就是它显示的内容

对象1:5的instanceCounter的值

instanceCounter for MyObject的值:5

对象1:1的计数器值

对象2:1的计数器值

对象3:1的计数器值

对象4:1的计数器值

对象5:1的计数器值

由于instanceCounter是一个静态变量,因此所有对象共享同一个变量。 由于在每个对象构造期间递增instanceCounter,因此在创建5个对象结束时,其值为5.因此,在所有sys out中输出为5。 这是静止的

编辑
要实现您的需求,请执行以下操作:

 class MyObject { static int instanceCounter = 0; int counter = 0; MyObject() { instanceCounter++; counter = instanceCounter; } } 

你必须对static variables的使用感到困惑。

每个类创建一次static class variables 。 它们由所有类实例共享,其中为每个对象实例创建non-static class variables

因此,如果您的counter变量是static ,它将只创建一次并由您的类的所有实例共享。

当您使用MyObject.counterobject1.counter等访问它时,您正在访问相同的counter变量,因为可以使用类名和实例变量访问static变量。

如果它non-static并且您的类的每个实例(或对象)都有自己的counter副本。
因此,每个Object1Object2等都将拥有自己的counter变量。

并且所有这些都将具有值1,因此您在输出中得到1。

更新:

更改您的代码,以获得您在其中一个答案的评论中提到的所需输出:

 MyObject Object1 = new MyObject(); System.out.println(“Value of Counter for Object 1: ” + Object1.counter); MyObject Object2 = new MyObject(); System.out.println(“Value of Counter for Object 2: ” + Object2.counter); MyObject Object3 = new MyObject(); System.out.println(“Value of Counter for Object 3: ” + Object3.counter); MyObject Object4 = new MyObject(); System.out.println(“Value of Counter for Object 4: ” + Object4.counter); MyObject Object5 = new MyObject(); System.out.println(“Value of Counter for Object 5: ” + Object5.counter); System.out.println(“Value of instanceCounter for Object 1: ” + Object1.instanceCounter); System.out.println(“Value of instanceCounter for MyObject: ” + MyObject.instanceCounter); 

如果你想这样做,你应该添加另一个变量,即:

 class MyObject { int instanceCounter = 0; static int counter = 0; MyObject() { instanceCounter = counter; counter++; } }