java 构造函数

public class T {
public int a;
public T(){
this(3);
}
public T(int b){
a = b;
}

public static void main(String[] args){

    T t = new T();
    System.out.println(t.a);
}

}
这样的话最后能输出3,但是

public class T {
public int a;
public T(){
this(3);
}
public T(int a){
a = a;
}

public static void main(String[] args){

    T t = new T();
    System.out.println(t.a);
}

}

这样最后输出的结果为0

这两段有什么不同吗,刚学java,谢谢

看了你的第二段代码,它的意思是:

[code="java"][code="java"]public class T {
public int a;
public T(){
this(3);
}
public T(int a){
a = a;
}

public static void main(String[] args){

T t = new T();
System.out.println(t.a);
}
} [/code][/code]
你在构造方法内初始化一个int的变量a,但是在一个方法体内使用了同名的变量,在不指定的情况下,编译器会默认选用局部变量.一般来说要用全局变量这个指定this.a;

而第一段你没用同名变量。