• java this用法


    在Java中,this是一个关键字,表示当前对象。它可以用来引用当前对象的实例变量、实例方法或者调用当前对象的构造方法。在本文中,我们将深入探讨Java中this关键字的用法。

    1. 引用当前对象的实例变量

    在Java中,this关键字可以用来引用当前对象的实例变量。通常情况下,我们在定义类的实例变量时,为了避免与方法参数或局部变量重名,会在变量名前面加上this关键字,以显式地表示这是一个实例变量。

    例如:

    public class Person {
        private String name;
        private int age;
    
        public void setName(String name) {
            this.name = name;
        }
    
        public void setAge(int age) {
            this.age = age;
        }
    
        public void printInfo() {
            System.out.println("Name: " + this.name);
            System.out.println("Age: " + this.age);
        }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17

    在上述代码中,setName和setAge方法中的参数名与实例变量名相同。为了区分它们,我们使用this关键字引用实例变量name和age。

    2. 引用当前对象的实例方法

    this关键字还可以用来引用当前对象的实例方法。例如,在一个类的实例方法中,可以使用this关键字调用同一个类的其他实例方法。

    例如:

    public class Calculator {
        private int result;
    
        public void add(int value) {
            this.result += value;
        }
    
        public void subtract(int value) {
            this.result -= value;
        }
    
        public void multiply(int value) {
            this.result *= value;
        }
    
        public void divide(int value) {
            this.result /= value;
        }
    
        public void clear() {
            this.result = 0;
        }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23

    在上述代码中,add、subtract、multiply和divide方法都使用了this关键字调用了同一个类的实例方法。这种用法可以方便地在一个实例方法中调用其他实例方法。

    3. 调用当前对象的构造方法

    在Java中,this关键字还可以用来调用当前对象的构造方法。这种用法通常在一个类的多个构造方法中用到,以避免在每个构造方法中重复编写相同的代码。

    例如:

    public class Point {
        private int x;
        private int y;
    
        public Point() {
            this(0, 0); // 调用带参数的构造方法,初始化x和y坐标为0
        }
    
        public Point(int x, int y) {
            this.x = x;
            this.y = y;
        }
    
        // 省略getX和setX方法
    
        // 省略getY和setY方法
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17

    在上述代码中,Point类有两个构造方法,一个是默认构造方法,一个是带两个参数的构造方法。默认构造方法使用了this关键字调用了带参数的构造方法,以初始化x和y坐标为0。

    4. 注意事项

    在使用this关键字时,需要注意以下几点:

    • this关键字必须在实例方法或构造方法中使用,不能在静态方法中使用。
    • 在实例方法中,可以省略this关键字,直接使用实例变量或实例方法名。但是如果和局部变量或方法参数名重名时,必须使用this关键字来区分。
    • 在构造方法中,this关键字必须放在构造方法的第一行,且只能调用一次。如果要调用多个构造方法,可以使用重载的构造方法来实现。
    • 在方法中使用this关键字调用实例方法时,可以省略this关键字,直接调用实例方法名。但是如果和局部变量或方法参数名重名时,必须使用this关键字来区分。

    5. 案例

    这里给你提供三个额外的例子来进一步说明Java中this关键字的用法。

    案例一:链式调用

    public class Person {
        private String name;
        private int age;
    
        public Person setName(String name) {
            this.name = name;
            return this;
        }
    
        public Person setAge(int age) {
            this.age = age;
            return this;
        }
    
        public void printInfo() {
            System.out.println("Name: " + this.name);
            System.out.println("Age: " + this.age);
        }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19

    在这个例子中,我们在setName和setAge方法中使用了this关键字并返回了this对象。这样就可以实现链式调用,连续设置多个属性,并最终调用printInfo方法打印信息。

    案例二:构造方法中的参数重名

    public class Point {
        private int x;
        private int y;
    
        public Point(int x, int y) {
            this.x = x;
            this.y = y;
        }
    
        public Point(Point point) {
            this(point.x, point.y);
        }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13

    在这个例子中,Point类有两个构造方法,其中一个构造方法接受一个Point对象作为参数。在第二个构造方法中,我们使用了this关键字来调用第一个构造方法,以实现通过另一个Point对象来创建新的Point对象。

    案例三:内部类中使用外部类对象

    public class Outer {
        private int x;
    
        public class Inner {
            private int y;
    
            public Inner(int y) {
                this.y = y;
            }
    
            public void printOuterX() {
                System.out.println("Outer x: " + Outer.this.x);
            }
        }
    
        public Outer(int x) {
            this.x = x;
        }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19

    在这个例子中,Outer类包含一个内部类Inner。在Inner类的printOuterX方法中,我们使用this关键字来引用外部类对象,并访问外部类的实例变量x。

    这些额外的案例展示了Java中this关键字更多的用法,包括链式调用、在构造方法中处理参数重名问题,以及内部类中使用外部类对象。希望它们能够帮助你更好地理解和应用Java中this关键字!

    6. 结语

    本文介绍了Java中this关键字的用法,包括引用当前对象的实例变量、实例方法,以及调用当前对象的构造方法。在使用this关键字时,需要注意它的使用场景和注意事项。希望本文对你理解和使用Java中this关键字有所帮助!

  • 相关阅读:
    【JAVA】Tomcat的安装
    成都优优聚代运营:打造精细化运营新标杆
    LeetCode - 743 网络延迟时间
    学习ASP.NET Core Blazor编程系列十四——修改
    Blazor前后端框架Known-V1.2.5
    [C++]使用纯opencv去部署yolov9的onnx模型
    CA证书和openssl介绍
    排序算法-插入排序法(InsertSort)
    Comate SaaS版:开发者的梦想工具终于来了
    MySql的索引与算法-B+树索引
  • 原文地址:https://blog.csdn.net/hitpter/article/details/133529240