this关键字的使用
- this的用法
- 1)this.data
- 2)this.method;
- 3)this()
this的用法
1)this.data; (访问属性)
2)this.method; (访问方法)
3)this(); (调用本类中其他构造方法)
1)this.data
public class Test {
public static void main(String[] args) {
Date date = new Date();
date.setDate(2024, 3, 3); // 设置 年、月、日
date.printInfo(); // 打印 年、月、日
}
}
class Date{
public int year;
public int month;
public int day;
public void setDate(int year, int month,int day){ // 设置 年、月、日
year = year;
month = month;
day = day;
}
public void printInfo(){ // 打印 年、月、日
System.out.println(year +" 年 " + month + " 月 " + day +"日");
}
}
输出结果:
原因:
1)在 setDate() 方法中成员属性没有使用 this 标明,属性没有赋值且类型为 int 类型;
2)int 型作为一个整型变量,默认初始化值为 0;
3)在调用setDate() 方法时,构造器中的属性被作为变量传入了方法,所以导致 year、month、day 全部为 0 。
// 在属性面前用 this 表明,就不会作为变量被传入方法
public void setDate(int year, int month,int day){ // 设置 年、月、日
this.year = year;
this.month = month;
this.day = day;
}
此时输出结果:
2)this.method;
用来在成员方法中调用另一个成员方法
public class Test {
public static void main(String[] args) {
Cat cat = new Cat();
cat.play();
}
}
class Cat{
public void play(){
System.out.println("小猫正在玩耍...");
this.eat(); // 在这里 this 调用了本类成员的 eat() 方法
}
public void eat(){
System.out.println("小猫正在吃鱼...");
}
}
输出结果:
3)this()
在构造方法中调用本类其他的构造方法
注意事项:
1)this()必须放在第一行;( 所以不可以和 super() 共用 )
2)一个构造方法只能调用一个构造方法,即只能存在一个 this() 。
public class Test {
public static void main(String[] args) {
Student jack = new Student();
}
}
class Student{
public String name;
public int age;
public char gender;
// 有参构造器
public Student(String name, int age, char gender) {
this.name = name;
this.age = age;
this.gender = gender;
System.out.println("有参构造器被调用...");
}
// 无参构造器
public Student(){
// 在无参构造器中调用有参构造器
this("jack", 14, '男');
System.out.println("无参构造器被调用...");
}
}
输出结果: