this关键字
this关键字调用构造方法的原则:
(1)在构造方法中使用this关键字时,必须作为构造方法的第一条语句。(2)只能在构造方法中使用this关键字来调用所在类中的其它构造方法。(3)只能使用this关键字调用其它构造方法,而不能使用方法名直接调用构造方法。
this两种用法:
1. 区分同名变量
示例代码: TestThis_2.java
/* this的常见用法1:区分同名变量
* 输出结果:
* this. i = 1
* i = 33
*/
public class TestThis_2 {
public static void main(String[] args) {
A aa = new A(33);
}
}
class A {
public int i = 1; //这个i是成员变量
/*注意:一般不这么写,构造函数主要是为了初始化,这么写主要是为了便于理解*/
public A(int i) { //这个i是局部变量
System.out.printf("this. i = %d\n", this.i); //this.i指的是对象本身的成员变量i
System.out.printf("i = %d\n", i); //这里的i是局部变量i
}
}
2. 构造方法间的相互调用
示例代码: TestThis_3.java
/* this的常见用法2: 构造方法中互相调用*/
public class TestThis_3 {
public static void main(String[] args) {
}
}
class A {
int i, j, k;
public A(int i) {
this.i = i;
}
public A(int i, int j) {
/* i = 3; error 如果不注释掉就会报错:用this(...)调用构造方法的时候,只能把它放在第一句
* TestThis_3.java:20: error: call to this must be first statement in constructor
* this(i);
* ^
* 1 error
*/
this(i);
this.j = j;
}
public A(int i, int j, int k) {
this(i, j);
this.k = k;
}
}