class Test {
static int p;
Test(int x) {
p=x;
}
}
class Mtest
{
public static void main(String args[])
{
Test c[] = new Test [100];
for(int i=0; i<5; i++) {
c[i]=new Test(i);
}
for (int i=0; i<5;i++) {
System.out.println(c[i].p);
}
}
输出: 4 4 4 4 4
这是什么样的巫术?不应该给我0,1,2,3,4 ??
答案 0 :(得分:4)
您正在使用静态字段
static int p;
跨类(不是每个实例)共享
如果您需要每个对象,请从声明中删除static
答案 1 :(得分:0)
因为p
是静态的,即类的字段,而不是对象的字段。因此p
在类test
的所有实例之间共享。您应该从字段声明中删除static
以达到您的结果预期。
答案 2 :(得分:0)
您将p
声明为static
。删除它,它应该很好。再加上遵循java准则的代码格式,它使它更具可读性。
答案 3 :(得分:0)
将static int p;
更改为int p
- &gt;您正在使用类变量而不是实例变量。