this关键字
this关键字
当前类的实例的引用
this指向类的实例(看引用实际上指的是谁,就是new的是谁,谁就是实例),
1.通过this调用类中的属性
1.如果形参名字int x和成员名字相同,通过this关键字可以明确的去访问一个类的成员变量,解决与局部变量名称冲突的问题;
public class Point {
public int x;
public int y;
public Point(){
}
public Point(int x){
//如果形参名字int x和成员名字相同
//此时明确作出区分
//x当做形参
//this关键字表示当前对象本身的引用
this.x=x;
}
public Point(int x,int y){
this.x=x;
this.y=y;
}
}
当形参名字int x和成员属性x时,类中属性无法被正确赋值。此时我们加上this关键字就可以正确的给对象属性赋值。
构造方法中的参数x是局部变量,但类中的属性x是成员变量,在构造方法中如果使用x,则是访问局部变量,但如果使用this.x则是访问成员变量。
当方法的局部变量和类的成员变量相同时,根据就近原则会优先使用局部变量如果需要访问本类中的成员变量,需要使用格式。this.成员变量名
“通过谁调用的方法谁就是this”
本文中name的方法sayHello(),在例子中·Person调用的sayHello(),所以Person就是this.
public class Person {
String name;//我自己的名字
//参数who是对方的名字
//成员变量name是自己的名字
public void sayHello(String name){
System.out.println(name+"你好,我是"+this.name);
}
}
public class Demo01Person {
public static void main(String[] args) {
Person person =new Person();
//设置自己的名字
person.name="王健林";
person.sayHello("王思聪");//who 自动出现
2.通过this调用类中的方法
public class Date {
int year;
int month;
int day;
public void setDay(int year,int month,int day){
this.year=year;
this.month=month;
this.day=day;
}
public void printDay(){
//调用类中的方法
this.setDay(1,2,3);
}
public String toString(){
return this.year+"/"+this.month+"/"+this.day;
}
}
3.this调用自身的构造方法
一个构造方法中使用“this.(参数1,参数2…)”的形式来调用其他的构造方法
public class Person {
public String name;
public String age;
public Person(){
//this调用构造方法,必须放在第一行
this("xiaoming","14");
}
public Person(String name, String age) {
this.name = name;
this.age = age;
}
public void show(){
System.out.println("名字是"+name+"年龄是"+age);
}
}
注意事项:1.在一个构造方法当中,调用当前类的另外一个构造方法的时候,通过this()的形式调用,不能再成员方法中使用,切两个构造方法不能互相低啊用
2.必须放在第一行,且只能调用