this的用法
1、表示类的成员变量,而非函数参数(注意在函数参数和成员变量同名是进行区分)
例:
public class Demo{
public int age = 18;
public void print(int age){
System .out.println(“打印类成员变量age=” + this.age);
System.out.println(“打印函数参数变量age=” + age);
}
public static void main(String []args){
Demo Myage = new Demo();
Myage.print(28);
}
}
运行结果:
D:> JAVA c Demo.java
D:>java Demo
打印类成员变量age=18
打印函数参数变量age=28
可见,打印出来的类成员变量为18,为在开始定义的,打印出的函数参数变量为28,为后来传参的。
2.表示返回自身这个对象。
例:
public class Demo{
public int age;
Demo Myageadd(){
age++;
return this;
}
public void print(){
System.out.println(“age=” + age);
}
public static void main(String []args){
Demo Myage = new Demo();
Myage.Myageadd().Myageadd().Myageadd().print();
}
}
运行结果:
D:>java Demo.java
D:>java Demo
age=3
可见返回值为3,年龄自增三次。
3.一个类中定义两个 构造函数 ,在一个构造函数中通过 this 这个引用来调用另一个构造函数。
public class ThisDemo {
运行结果:
D:>java ThisDemo.java
D:>java ThisDemo
最终的名字=Mick
最终的年龄=21
总结一下,this主要要三种用法:
1、表示对当前对象的引用!
2、表示用类的成员变量,而非函数参数,注意在函数参数和成员变量同名是进行区分!其实这是第一种用法的特例,比较常用,所以那出来强调一下。
3、用于在 构造方法 中引用满足指定参数类型的 构造器 (其实也就是构造方法)。但是这里必须非常注意:只能引用一个构造方法且必须位于开始!
还有就是注意:this不能用在 static 方法中!所以甚至有人给static方法的定义就是:没有this的方法!虽然夸张,但是却充分说明this不能在static方法中使用!
说明在什么情况下需要用到this:
第一、通过this调用另一个构造方法,用发是this(参数列表),这个仅仅在类的构造方法中,别的地方不能这么用。
第二、函数参数或者函数中的 局部变量 和成员变量同名的情况下,成员变量被屏蔽,此时要访问成员变量则需要用“this.成员变量名”的方式来引用成员变量。当然,在没有同名的情况下,可以直接用成员变量的名字,而不用this,用了也不为错。
第三、在函数中,需要引用该函所属类的当前对象时候,直接用this。