Java 中的 this 要害字详解_怪人怪事

Java 中的 this 要害字详解

怪人怪事 2023-05-04 19:36www.bnfh.cn怪人怪事

Java 中的 this 关键字详解

  1. 引用当前类实例变量 在Java类中,可以使用 this 关键字来引用当前类的实例变量,例如
public class Person {
    private String name;
    private int age;
    
    public Person(String name, int age) {
        this.name = name;
        this.age = age;
    }
}

在上面的代码中,this.name 和 this.age 引用了当前对象的 name 和 age 实例变量。

  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 setPerson(String name, int age) {
        setName(name);
        setAge(age);
    }
}

在上面的代码中,setPerson 方法内部使用 setName 和 setAge 方法时省略了 this 关键字,但其实是在调用当前类的方法。

  1. 调用当前类构造函数 在Java类中,可以使用 this 关键字来调用当前类的构造函数。在一个构造函数内部,可以通过调用其他构造函数来初始化当前对象,例如
public class Person {
    private String name;
    private int age;
    
    public Person() {
        this("Unknon", 0);
    }
    
    public Person(String name) {
        this(name, 0);
    }
    
    public Person(int age) {
        this("Unknon", age);
    }
    
    public Person(String name, int age) {
        this.name = name;
        this.age = age;
    }
}

在上面的代码中,构造函数 Person() 调用了构造函数 Person(String name, int age) 以初始化 name 和 age 实例变量。

  1. 方法调用中的参数传递 在Java方法调用中,可以使用 this 关键字将当前对象作为参数传递给其他方法,例如
public class Person {
    private String name;
    private int age;
    
    public void print() {
        System.out.println("Name: " + name + ", Age: " + age);
    }
    
    public void printPerson() {
        print(this);
    }
    
    public void print(Person person) {
        person.print();
    }
}

在上面的代码中,printPerson 方法使用 this 关键字将当前对象作为参数传递给 print 方法。

  1. 构造函数调用中的参数传递 在Java构造函数调用中,可以使用 this 关键字将当前对象作为参数传递给其他构造函数,例如
public class Person {
    private String name;
    private int age;
    
    public Person() {
        this("Unknon", 0);
    }
    
    public Person(String name) {
        this(name, 0);
    }
    
    public Person(int age) {
        this("Unknon", age);
    }
    
    public Person(String name, int age) {
        this.name = name;
        this.age = age;
    }
}

在上面的代码中,构造函数 Person() 调用了构造函数 Person(String name, int age) 以初始化 name 和 age 实例变量。

  1. 从方法返回当前类实例 在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;
    }
}

在上面的代码中,setName 和 setAge 方法返回当前对象,这样可以使用链式调用来设置多个属性,例如

Person person = ne Person().setName("Alice").setAge(20);

这样,person 对象的 name 属性为 "Alice",age 属性为 20。

Java 中的 this 关键字主要用于引用当前类的实例变量、调用当前类的方法、调用当前类的构造函数、作为方法调用中的参数传递、在构造函数调用中作为参数传递、以及从方法返回当前类实例。这些用法可以让我们更方便地编写代码并避免一些常见的错误。

Copyright © 2016-2025 www.bnfh.cn 怪异网 版权所有 Power by