this 关键字用来表示当前对象本身,或当前类的一个实例,通过 this 可以调用本对象的所有方法和属性
public class Demo{
public int x = 10;
public void a(){
// 通过 this 点取成员变量
int z = this.x;
System.out.println( z);
}
public static void main(String[] args) {
Demo obj = new Demo();
obj.a();
}
}
然后其实我们在平时的默认情况下是省略了this的,就直接写的是int z=x;这也是可以的。
public class Test {
int i;
public Test(int i){
this.i=i;
}
void show(){
System.out.println(i);
}
public static void main(String[] args) {
Test t=new Test(4);
t.show();
}
}
然后的执行结果是4.但是将public Test(int i){
this.i=i;
}改为public Test(int i){
i=i;
}则打印的结果为0.这样子是为什么呢?
这就涉及到了this的几个用处。java中this关键字主要有三个应用: (1)this调用本类中的属性,也就是类中的成员变量; (2)this调用本类中的其他方法; (3)this调用本类中的其他构造方法,调用时要放在构造方法的首行。
结合上一段小代码,可以理解为是第一句的int i中的i是全局变量。然后在show()方法中的时候i没有被赋值然后就是0,但是在用到this.i=i的时候就会将构造方法中的形参i的值赋值给全局变量的i,然后在show()方法中就会打印出我们需要的这个i的值了。
作为方法名来初始化对象
也就是相当于调用本类的其它构造方法,它必须作为构造方法的第一句
public class Demo{
public String name;
public int age;
public Demo(){
this("李四", 3);
}
public Demo(String name, int age){
this.name = name;
this.age = age;
}
public void say(){
System.out.println("我的名字是" + name + ",已经" + age + "岁");
}
public static void main(String[] args) {
Demo obj = new Demo();
obj.say();
}
}
这里要注意的是:
在构造方法中调用另一个构造方法,调用动作必须置于最起始的位置。
不能在构造方法以外的任何方法内调用构造方法。
在一个构造方法内只能调用一个构造方法。