class MyObject {
static int instanceCounter = 0;
static int counter = 0;
MyObject() {
instanceCounter++;
counter = counter + 1;
}
}
我使用的是静态的整数来获得这样的输出:
instanceCounter的值对于对象1:5
instanceCounter用于为MyObject的价值:5
计数器的值对象1:1
计数器的值对象2:2
计数器的值对象3:3
计数器的值对象的4:4
计数器的值对象5:5
但是它的显示
instanceCounter的值对于对象1:5
instanceCounter用于为MyObject的价值:5
计数器的值对于对象1:5
计数器的值为对象2:5
计数器的值对象3:5
计数器的值为对象4:5
计数器的值对象5:5
我的亚军类
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);
}
}
如果我删除静态这是它显示
instanceCounter的值对于对象1:5
instanceCounter用于为MyObject的价值:5
计数器的值对象1:1
计数器的值为对象2:1
计数器的值为对象3:1
计数器的值为对象4:1
计数器的值为对象5:1
由于instanceCounter是一个静态变量,所有对象共享相同的变量。 既然你每个对象的构造过程中递增instanceCounter,创造5个对象的结尾,它的值是5.因此,你得到的输出为5所有SYS出局。 那是静点
编辑
为了达到你所需要的,请执行以下操作:
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++;
}
}