java-this关键字

Java 中的 `this` 关键字是一个特殊的引用,它代表当前对象。在 Java 中,`this` 关键字可以在类的构造函数、方法、块和初始化语句中使用。`this` 关键字的主要作用是:
1. 引用当前对象的属性(Field):使用 `this` 关键字可以访问当前对象的属性。
2. 引用当前对象的参数(Argument):使用 `this` 关键字可以访问当前对象的构造函数或方法的参数。
3. 传递当前对象作为参数:使用 `this` 关键字可以将当前对象传递给其他方法或构造函数。
4. 返回当前对象:使用 `this` 关键字可以从方法中返回当前对象。
### this 引用当前对象的属性
在 Java 中,`this` 关键字可以用来引用当前对象的属性。当一个属性和方法同名时,使用 `this` 关键字可以区分它们。
```java
public class Person {
    private String name;
    
    public String getName() {
        return this.name;
    }
    
    public void setName(String name) {
        this.name = name;
    }
}
```
在这个例子中,`getName()` 方法和 `setName()` 方法都包含一个名为 `name` 的参数。使用 `this.name` 可以明确指出我们想要访问的是对象属性 `name`,而不是方法参数 `name`。
### this 引用当前对象的参数
在 Java 中,`this` 关键字可以用来引用当前对象的构造函数或方法的参数。这通常用于构造函数中,以区分参数和类属性。
```java
public class Person {
    private String name;
    private int age;
    
    public Person(String name, int age) {
        this.name = name;
        this.age = age;
    }
    
    public void introduce() {
        System.out.println("My name is " + this.name + " and I am " + this.age + " years old.");
    }
}
```
在这个例子中,`Person` 类有一个构造函数,它接受 `name` 和 `age` 两个参数。在构造函数内部,使用 `this.name` 和 `this.age` 来将参数值赋给类的属性。
### this 传递当前对象作为参数
在 Java 中,`this` 关键字可以用来将当前对象传递给其他方法或构造函数。这通常用于初始化其他对象。
```java
public class Student {
    private String name;
    
    public Student(String name) {
        this.name = name;
    }
    
    public void introduce() {
        System.out.println("My name is " + this.name);
    }
    
    public static void main(String[] args) {
        Student student1 = new Student("Alice");
        student1.introduce();
        
        Student student2 = new Student(student1.getName());
        student2.introduce();
    }
}
```
在这个例子中,`Student` 类有一个构造函数,它接受一个 `name` 参数。在构造函数内部,使用 `this.name` 将参数值赋给类的属性。在 `main` 方法中,我们创建了一个 `Student` 对象 `student1`,并调用它的 `introduce()` 方法。然后,我们使用 `student1.getName()` 方法获取 `student1` 的名字,并将其传递给另一个 `Student` 对象的构造函数,创建了 `student2` 对象。
### this 返回当前对象
在 Java 中,`this` 关键字可以用来从方法中返回当前对象。这通常用于返回对象的引用,而不是对象的副本。
```java
public class Counter {
    private int count = 0;
    
    public Counter increment() {
        count++;
        return this;
    }
    
    public int getCount() {
        return count;
    }
    
    public static void main(String[] args) {
        Counter counter = new Counter();
        counter.increment().increment().increment();
        System.out.println("Count is " + counter.getCount());
    }
}
```
在这个例子中,`Counter` 类有一个 `increment()` 方法,它将 `count` 属性增加 1。`increment()` 方法返回 ``this` 关键字,而不是返回一个新的 `Counter` 对象的引用。这样,我们可以链式调用多个 `increment()` 方法。在 `main` 方法中,我们创建了一个 `Counter` 对象 `counter`,并连续调用了三个 `increment()` 方法。每次调用 `increment()` 方法时,`count` 属性都会增加 1,并且返回 `this` 对象的引用。最后,我们调用 `getCount()` 方法来获取 `counter` 对象的 `count` 属性值。
### 在静态方法中使用 this
在 Java 中,`this` 关键字不能在静态方法中使用,因为静态方法属于类而不属于对象实例。静态方法不能直接访问非静态成员,包括使用 `this` 关键字来引用对象实例的属性或方法。
### 在构造函数中使用 this
在 Java 构造函数中,`this` 关键字可以用来引用当前类的另一个构造函数。这通常用于构造函数重载,以便在不同的构造函数之间共享代码。
```java
public class Person {
    private String name;
    private int age;
    
    public Person(String name, int age) {
        this.name = name;
        this.age = age;
    }
    
    public Person(String name) {
        this(name, 0); // 调用另一个构造函数,传递默认年龄 0
    }
}
```
在这个例子中,`Person` 类有两个构造函数。第一个构造函数接受 `name` 和 `age` 两个参数,第二个构造函数只接受 `name` 参数。在第二个构造函数中,我们使用 `this(name, 0)` 来调用第一个构造函数,同时传递一个默认的 `age` 值 0。
### 在初始化语句中使用 this
在 Java 类的初始化语句中,`this` 关键字可以用来引用当前类的实例变量。这通常用于构造函数的初始化代码块中,以区分参数和类属性。
```java
public class Person {
    private String name;
    private int age;
    
    public Person(String name, int age) {
        this.name = name;
        this.age = age;
        this(name, age, true); // 调用另一个构造函数,传递默认的 enabled 值 true
    }
    
    public Person(String name, int age, boolean enabled) {
        this.name = name;
        this.age = age;
        this.enabled = enabled;
    }
}
```
在这个例子中,`Person` 类有三个构造函数。第一个构造函数接受 `name` 和 `age` 两个参数,第二个构造函数接受 `name`、`age` 和一个 `enabled` 参数。在第一个构造函数中,我们使用 `this(name, age, true)` 来调用第二个构造函数,同时传递一个默认的 `enabled` 值 `true`。
### 总结
Java 中的 `this` 关键字是一个非常有用的特性,它允许我们引用当前对象。通过使用 `this` 关键字,我们可以访问当前对象的属性、方法、构造函数参数等。`this` 关键字还可以用于传递当前对象作为参数,返回当前对象的引用,以及在构造函数之间共享代码。正确使用 `this` 关键字可以提高代码的可读性和可维护性,同时避免命名冲突和提高程序的灵活性。

  • 19
    点赞
  • 23
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值