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;
而第一段你没用同名变量。