this 关键字
1.当方法的参数名或局部变量和成员变量重名时,可以用this关键字访问成员变量
public class ThisTest2 {
private String name;
private String classname;
private int id;
public void setclassname(String classname) {
//this.classname 就是成员变量
this.classname = classname;
2.this代表当前对象,如果某个对象调用带this的成员方法时,那么this就是调用该方法的对象
public class ThisTest2 {
private String name;
private String classname;
private int id;
public ThisTest2(String name, String classname) {//两个参数的构造方法
this.name = name;//this指向成员变量
this.classname = classname;
}
public ThisTest2(String name, String classname, int id) {//三个参数的构造方法
this.name = name;//this指向成员变量
this.classname = classname;
this.id = id;
}
public void setclassname(String classname) {
this.classname = classname;
}//重写tostring();
public String toString() {
return "[name=" + name + ", classname=" + classname + ", id=" + id + "]";
}
public static void main(String[] args) {
//new两个对象,t2,t3
ThisTest2 t2 = new ThisTest2("李四", "二班");
ThisTest2 t3 = new ThisTest2("王五", "三班", 2);
System.out.println(t2.toString()); }
//对象t2的输出结果
[name=李四, classname=二班, id=0]
System.out.println(t3.toString());
//对象t3的输出结果
[name=王五, classname=三班, id=2]
如果t3对象调用了setclassname()方法
t3.setclassname("五班");
System.out.println(t3.toString());
//对象t3的输出结果
[name=王五, classname=五班, id=2]
即,当t3对象调用带有this关键字的成员方法时;成员方法中的this就指向t3
3.this调用构造方法
以上面为例
public class ThisTest2 {
private String name;
private String classname;
private int id;
//定义无参构造方法
public ThisTest2() {
//用this关键字调用下面有参构造方法
this("张三", "一班", 1);
}
public ThisTest2(String name, String classname, int id) {
this.name = name;
this.classname = classname;
this.id = id;
}
public static void main(String[] args) {
ThisTest2 t1 = new ThisTest2();
ThisTest2 t3 = new ThisTest2("王五", "三班", 2);
System.out.println(t1.toString());
System.out.println(t3.toString());
}
结果为:
[name=张三, classname=一班, id=1]
[name=王五, classname=三班, id=2]
4.this不能再static修饰的方法中使用