1. 程式人生 > 其它 >Java關鍵字之this

Java關鍵字之this

技術標籤:java指標

Java關鍵字 —— this

定義

this是自身的一個物件,代表物件本身,可以理解為:指向物件本身的一個指標。

用法

this的用法在Java中大概可以分為3種

普通的直接引用

this相當於指向當前物件的本身

形參與成員變數重名,使用this來區分

例項:

punlic class Student{
	private Strins name;

	public String getName(){
		return name;
	}
	public void setName
(String name){ this.name = name; } }

上述程式碼中,用this修飾的name就是成員變數name,沒有this修飾的就是形參name。
在這裡插入圖片描述
上述程式碼中的getName方法並沒有形參,沒有與成員變數重名,所以直接return name返回的就是成員變數。

引用建構函式

使用方法:this(引數):呼叫本類中另一種形式的建構函式(應該為建構函式中的第一條語句)。
例項:

package com.lrving;

public class TestDemo {
	public static void main(String[] args) {
		Person p =
new Person(); System.out.println(p.getName()); System.out.println(p.getAge()); } } 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, 18); // 呼叫另一個構造方法Person(String, int) } public Person() { this("Unnamed"); // 呼叫另一個構造方法Person(String) } public String getName() { return this.name; } public int getAge() { return this.age; } }

當執行

public class TestDemo {
	public static void main(String[] args) {
		Person p = new Person();
		System.out.println(p.getName());
		System.out.println(p.getAge());
	}

}

執行得到的結果是
在這裡插入圖片描述
原因是Person p = new Person();呼叫的是

 public Person() {
        this("Unnamed"); // 呼叫另一個構造方法Person(String)
    }

此時this(“Unnamed”);呼叫

    public Person(String name) {
        this(name, 18); // 呼叫另一個構造方法Person(String, int)
    }

所以輸出的結果就是
Unnamed
18
當執行

public class TestDemo {
	public static void main(String[] args) {
		Person p = new Person("Lrving");
		System.out.println(p.getName());
		System.out.println(p.getAge());
	}

}

執行得到的結果是
Lrving
18
原因是Person p = new Person(“Lrving”);呼叫的是

    public Person(String name) {
        this(name, 18); // 呼叫另一個構造方法Person(String, int)
    }

此時 this(name, 18);呼叫

    public Person(String name, int age) {
        this.name = name;
        this.age = age;
    }

所以輸出的結果就是
Lrving
18
當執行

public class TestDemo {
	public static void main(String[] args) {
		Person p = new Person("Lrving",18);
		System.out.println(p.getName());
		System.out.println(p.getAge());
	}

}

執行得到的結果就是
Lrving
18
直接呼叫的就是

    public Person(String name, int age) {
        this.name = name;
        this.age = age;
    }

注意事項

代表所在類的物件引用,方法被那個物件呼叫,this就代表那個物件。