一:含义

虚拟机给每个对象分配this,代表当前对象。

1:使用this解决构造器问题

  1. class person{
  2. String name;
  3. int age;
  4. public person(String name,int age){
  5. this.name = name;
  6. this.age = age;
  7. }
  8. /* 不同想之前那样形参起不同的名字
  9. public person(String pname,int page){
  10. name = npame;
  11. age = page;
  12. }
  13. */
  14. }

二:深入理解this

:::danger 简单来说:哪个对象调用,this就代表哪个对象 ::: image.png

三:this的注意事项和使用细节

  1. this关键字__可以用来访问本类的属性、方法、构造器

    1. public person(String name,int age){
    2. this.name = name;
    3. this.age = age;
    4. this.eat();
    5. }
  2. this用于区分当前类的属性和局部变量

    1. public person(String name,int age){
    2. this.name = name;
    3. this.age = age;
    4. }
  3. 访问成员方法的语法: this.方法名(参数列表);

  4. this访问构造器: this(参数列表) ; __注意只能在构造器中使用(即只能在构造器中访问另外一个构造器,必须放在第一条语句)

    1. public person(){
    2. this("sakura",20)
    3. System.out.println("无参构造器被调用");
    4. }
    5. public person(String name,int age){
    6. System.out.println("有参构造器被调用");
    7. }
  5. this不能在类定义的外部使用,只能在类定义的方法中使用。

    四:练习

    image.png

    1. package Date0730;
    2. /**
    3. * 作者:sakura
    4. * 日期:2022年07月30日 23:06
    5. */
    6. public class personTest {
    7. public static void main(String[] args) {
    8. person sakura = new person("sakura", 21);
    9. person lf = new person("sakura", 20);
    10. sakura.compareTo(lf);
    11. }
    12. }
    13. class person {
    14. String name;
    15. int age;
    16. public person(String name,int age){
    17. this.name = name;
    18. this.age = age;
    19. }
    20. public void compareTo(person p){
    21. if (this.name.equals(p.name)){
    22. System.out.println("姓名相同");
    23. }else{
    24. System.out.println("姓名不同");
    25. }
    26. }
    27. }