经常使用到this这个关键字,关于这个关键字的用法和注意有哪些呢,这里对this关键字做一个总结,加深自己对这个关键字的理解和印象。
一、this的三种常见用法
1.this调用本类中的属性,也就是类中的成员变量
感觉用代码表述更为直白,代码示例:
package com.jxs.chapeter5;
import org.junit.Test;
/**
* Created by jiangxs on 2018/4/10.
*/
public class ThisDemo1 {
private int number;
public void changeNumber(int number) {
System.out.println("局部变量的number值为:" + (number + 5));
System.out.println("成员变量的number值为:" + (this.number + 2));
}
@Test
public void test() {
int inputNum = 2;
changeNumber(inputNum);
}
}
测试结果:
局部变量的number值为:7
成员变量的number值为:2
Process finished with exit code 0
如上面的测试结果所示,this.number和number不是同一个变量,一个是成员变量,一个是局部变量,通过this.number调用了所在类中的成员变量
2.this调用本类中的其他方法
代码示例:
package com.jxs.chapeter5;
import org.junit.Test;
/**
* Created by jiangxs on 2018/4/10.
*/
public class ThisDemo2 {
private int number;
public void changeNumber(int number) {
System.out.println("局部变量的number值为:" + (number + 5));
System.out.println("成员变量的number值为:" + (this.number + 2));
}
@Test
public void test() {
int inputNum = 2;
this.changeNumber(inputNum);
}
}
测试结果:
局部变量的number值为:7
成员变量的number值为:2
Process finished with exit code 0
this关键字除了可以引用变量或者成员方法之外,还有一个重大的作用就是返回类的引用。如在代码中,可以使用return this,来返回某个类的引用。此时这个this关键字就代表类的名称。如代码在上面ThisDemo2类中,那么代码代表的含义就是return thisDemo2。可见,这个this关键字除了可以引用变量或者成员方法之外,还可以作为类的返回值,这才是this关键字最引人注意的地方。
3.this调用本类中的其他构造方法,调用时要放在构造方法的首行
代码示例:
package com.jxs.chapeter5;
public class ThisDemo2 {
private String name;
private int age;
public ThisDemo2() {
System.out.println("这是构造器1");
}
public ThisDemo2(String name) {
this();
this.name = name;
System.out.println("这是构造器2");
}
public ThisDemo2(String name, int age) {
this(name);
this.age = age;
System.out.println("这是构造器3");
}
public static void main(String[] args) {
String userName = "jiangxs";
int age = 24;
ThisDemo2 t = new ThisDemo2(userName, age);
System.out.println(t);
}
@Override
public String toString() {
return "ThisDemo2{" +
"name='" + name + '\'' +
", age=" + age +
'}';
}
}
测试结果:
这是构造器1
这是构造器2
这是构造器3
ThisDemo2{name='jiangxs', age=24}
Process finished with exit code 0
二、使用this要注意的问题
1.this调用本类中的其他构造方法时,调用时要放在构造方法的首行!调用时要放在构造方法的首行!调用时要放在构造方法的首行!(重要的事情说三遍),因为初始化的动作要先执行,若初始化中还含有初始化要先执行内部的初始化。同时,可以用this调用一个构造器,但却不能调用两个this(this调用构造方法只能放置在构造器首行)
2.this不能用在static方法中。
好了,this的用法和事项在这里就整理完毕了~