边学边记——Java中的this关键字的用法

发布于:2022-12-25 ⋅ 阅读:(200) ⋅ 点赞:(0)

目录

1.修饰属性,表示调用类中的成员变量

2.修饰方法

(1).修饰普通方法(可写可不写)

(2).this修饰构造方法

注意


1.修饰属性,表示调用类中的成员变量

首先,我们先来了解一个概念:

程序的就近匹配原则:编译器会从调用代码处的最近位置查找有无匹配的变量或者方法,若找到直接使用最近的变量或方法。

eg:定义一个学生类,使用构造方法时,如果我们这样写,其实是构造函数中的形参在自己调用自己,很明显是错误的。这样并没有将构造函数中传入的值赋给成员变量,也就是由于就近匹配原则导致的。

我们实际上想表达的意思是将构造函数传入的值赋给成员变量,这时我们就可以使用this关键字来解决这个问题,如下:

  

public class Student {
    /*
    定义一个学生类
     */
    public String name;//姓名
    public int sno;//学号

    public Student(String name, int sno) {
        this.name = name;
        this.sno = sno;
    }
}

2.修饰方法

(1).修饰普通方法(可写可不写)

语法格式:this.方法名(参数);

最好写上,使用 this 表示明确表示调用的是当前类的方法。

public void fun(){
    System.out.println("姓名为:"+name+" 学号为:"+sno);
    this.show();//等同于show();
}

public void show(){
    System.out.println("调用show成员方法");
}

(2).this修饰构造方法

语法格式:this(构造方法的参数);

注意:没有 “.” 表示调用的类中的构造方法。

主要可以表示构造方法之间的相互调用。

思考

这样做的目的:主要是减少了代码的重复。 

public Student() {//无参构造函数
    System.out.println("************");
}

public Student(String name) {//有一个参数的构造函数
    this();//调用无参构造函数
    this.name = name;
}

public Student(String name, int sno) {//有两个参数的构造函数
    this(name);//调用有一个参数的构造函数
}

注意:

  • a.this调用构造方法必须放在当前构造方法的首行调用。
  • b.对构造方法的调用不能成 “环” ,必须线性调用。

3.this表示当前对象的引用(就像照镜子)

当前是通过哪个对象调用的属性或者方法,this就指代谁。

public void fun1(){
    System.out.println(this);
}

public static void main(String[] args) {
    Student stu=new Student("生菜虾",1234);
    System.out.println(stu);
    stu.fun1();
    System.out.println("-----------------");
    Student stu1=stu;
    System.out.println(stu1);
    stu1.fun1();
    System.out.println("-----------------");
    Student stu2=new Student("蜜桃兔",2333);
    System.out.println(stu2);
    stu2.fun1();
}

注意:

this不能在静态域中使用 。

如有建议或想法,欢迎一起讨论学习~


网站公告

今日签到

点亮在社区的每一天
去签到