public class Test
{
    int x=10;
    public static void main(String args[])
    {        Test t=new Test();
        System.out.println(t.x);   //输出为10
    }
}    为什么可以给非静态变量x赋值为10?不是还没有分配内存空间吗?我任意声明一个对象,输出都为10

解决方案 »

  1.   

    确保创建对象前所有的成员变量都已经被初始化完毕
    正是java的安全性所在啊
      

  2.   

    如果是其他用户声明的普通类呢?比如:
    public class A
    {
        B b1;
        B b2=new B();
        public static void main(String args[])
        {
           A a=new A(); 
        }
    }class B
    {
        int x;
    }这样的话,都是A类中的对象成员,在类A声明一个对象a的时候,对象b1和b2的存储有什么区别?或者说,对象作为类的成员时,new与不new有什么区别呢?
      

  3.   

    我的想法是,如果声明类A的对象,则对于对象成员b1来说,每一个类A的对象都会给它分配一个空间。而对于对象成员b2来说,因为在定义类A的时候就给b2 new了一个空间,所以,对所有类A的对象来说,都是公用这一个空间的,不知道对否