• Java -- this关键字


    this关键字的三种用法

    1、通过this关键字可以明确的访问一个类的成员变量,解决成员变量与局部变量名称冲突的问题
    例:

    public class Date {
        //定义三个成员变量
        public int year;
        public int month;
        public int day;
        
        //带有三个参数的构造方法
        /*public void setDate(int year,int month, int day) {//错误示范,运行结果为0,0,0
            year = year;
            month = month;
            day = day;
        }*/
        public void setDate(int year,int month, int day) {
            this.year = year;
            this.month = month;
            this.day = day;
        }
        
        public static void main(String[] args) {
            
            Date d = new Date();
            d.setDate(2022,8,8);
        }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24

    上面代码构造方法中定义的参数year,month,day是局部变量,因为Java采取就近原则访问,所以构造方法中只是形参自己给自己赋值了,并没有赋值到成员变量中,想要访问类中的成员变量,就要使用this.变量名访问。
    2、通过this关键字调用成员方法

    public class Date {
        public void test1() {
            System.out.println("test1被调用了");
        }
        public void test2() {
            //调用test1
            this.test1();
        }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9

    在test2()方法中通过this.test1();访问test1()方法,注意此处的this关键字可以不写,效果是一样的。
    3、在构造方法中访问构造方法使用this(参数1,参数2…)

    public class Student {
        String name;
    
        public Student() {
            System.out.println("无参构造方法被调用啦!");
        }
        
        //有参构造方法
        public Student(String name) {
            this();//调用无参构造方法
            this.name = name;
        }
        
        public void printName() {
            System.out.println("姓名:" + name);
        }
    
        public static void main(String[] args) {
            Student stu = new Student("张三");
            stu.printName();
        }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22

    在有参构造方法中调用了无参构造方法,在使用this调用构造方法时有一下几点需要注意:

    • 只能在构造方法中使用this()调用其他构造方法,不能在成员方法中调用
    • 在构造方法中使用this()调用构造方法的语句必须位于第一行,而且只能只出现一次
    • 不能在一个类中的两个构造方法中使用this()相互调用
  • 相关阅读:
    壳聚糖-聚乙二醇-吲哚菁绿,Indocyaninegreen-PEG-Chitosan
    打破思维的玻璃罩
    序列化与反序列化
    DN-DETR(CVPR 2022)
    国科大数据挖掘期末复习——聚类分析
    国内手机安装 Google Play 服务 (GMS/Google Mobile Services)
    [附源码]JAVA毕业设计基于Ssm学生信息管理系统(系统+LW)
    Matlab:转换日期向量返回意外输出
    中国SaaS行业等待“渡劫时刻”
    Make Jar, Not War
  • 原文地址:https://blog.csdn.net/Yuan_o_/article/details/126281837