• 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()相互调用
  • 相关阅读:
    罗技鼠标接收器丢失或损坏后用另一个接收器配对的方法
    【ONNX】导出,载入PyTorch的ONNX模型并进行预测新手教程(Windows+Python+Pycharm+PyTorch+ONNX)
    Android-NDK-clang 编译 FFmpeg
    数据结构——单调栈
    Python遍历删除列表元素的一个奇怪bug
    1.1.OpenCV技能树--第一单元--OpenCV简介
    xss反射型漏洞复现
    阿里云服务器入门级实例和企业级实例有何区别?应该如何选择?
    免杀对抗-ShellCode上线+回调编译执行+混淆变异算法
    企业战略管理:大题
  • 原文地址:https://blog.csdn.net/Yuan_o_/article/details/126281837