class T {
int x=1; public T(int x) {
super();
this.x = x;
}
}
public class M { /**
 * @param args
 */
public static void main(String[] args) {
// TODO Auto-generated method stub
T t=new T(2);
}}
上面的程序,
第一种理解:
T t=new T(2);
使用new关键字创建一个类t对象,
就执行int x=1;
再调用构造方法第二种理解:
T t=new T(2);
使用new关键字开劈一个T类对象的内存空间,
这个内存空间里有个4字节的存整型数据的内存空间(x),而且这个内存里还有存了1的值
就直接调用构造方法
主要是int x=1;这句该怎么理解?

解决方案 »

  1.   

    楼主是C++程序员? Java声明成员的时候是可以初始化的,很直观。
      

  2.   

    abstract class A{
    public A(){
    this.print() ;
    }
    public abstract void print() ;
    };
    class B extends A{
    private int x = 100 ;
    public B(int x){

    this.x = x ;
    }
    public void print(){
    System.out.println("x = " + x) ;
    }
    };
    public class TestJava{
    public static void main(String args[]){
    A a = new B(10) ;
    }
    };
    这个程序大家又是怎么理解呢?
      

  3.   

    int x = 100 ;你不要用int类型了。你随便自己写个类型,试一试。在它的构造里面输出点东西
      

  4.   

    ...看了好久才看到 int i=1; ..........
      

  5.   

    java 初使化类对象时会初使化他的成员变量
      

  6.   

    结果是x=0
    是因为还没赋初值
    还是因为在A类里访问不到它的子类B里的值?