我写的代码如下:
public class KK
{
public static void main(String args[])
{
text text1=new text();
text text2=new text();
text1.a=1;
text1.b=2;
text2.a=3;
text2.b=4;
System.out.println("text1.a="+text1.a);
System.out.println("text1.b="+text1.b);
System.out.println("text2.a="+text2.a);
System.out.println("text2.b="+text2.b);
}
}
class text
{ static int a;
int b;
}
运行的结果为:
text1.a=3
text1.b=2
text2.a=3
text2.b=4
为什么static变量a会为3?
代码里面似乎并没有对它进行初始化呀。。请大大们指点。。

解决方案 »

  1.   

    text2.a=3;
    这不是初始化是什么?!
      

  2.   

    那为什么text1.a=1;不生效呢?
      

  3.   

    static 静态变量在内存中只保存一份值,所有对他的实例化对象都指向同一块地址,它的值是最后修改的值,不管它有几个实例化对象。静态变量a的最后赋值是3,所以test1.a=test2.a=3;而非静态的变量在实例化时是独立的分配内存空间的。所以test1.b和test2.b的值是不一样的!
      

  4.   

    class text
    { static int a;
    int b;
    }a是静态变量啊。内存中只有一个的。你在声明个
    text text3=new text();
    text3.a=5;
    那么所有text对象的a属性就都是5了。后面的会把前面的覆盖,你可以在每次给a赋值完之后,把a打印出来看看。