增加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.counter
或object1.counter
等访问它时,您正在访问相同的counter
变量,因为可以使用类名和实例变量访问static
变量。
如果它non-static
并且您的类的每个实例(或对象)都有自己的counter
副本。
因此,每个Object1
, Object2
等都将拥有自己的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++; } }