Java是一種面向對象的編程語言,它的代碼中經常會出現this和that這兩個關鍵詞。本篇文章將會解釋這兩個關鍵詞的含義及其在Java中的使用。
首先,讓我們來看一下this關鍵詞。在Java中,this關鍵詞代表當前對象的一個引用。在一個類中,如果使用this關鍵詞,它指向的是當前正在執行的對象。例如,我們可以使用this關鍵詞在類中訪問當前對象的成員變量、成員方法或構造方法。以下是一個使用this關鍵詞的例子:
class Person { String name; public Person(String name) { this.name = name; } public void sayHello() { System.out.println("Hello, my name is " + this.name); } } Person p = new Person("Tom"); p.sayHello(); // Hello, my name is Tom
在上面的例子中,我們使用了this關鍵詞來訪問類成員變量name。在構造方法中,使用this來引用當前對象的成員變量,可以避免與傳遞給構造方法的參數混淆。在sayHello方法中,我們使用this關鍵詞來引用當前對象的成員方法,這樣可以更加清晰地表示方法調用的對象。
接下來,我們來看一下that關鍵詞。在Java中,并沒有內置的that關鍵詞,通常是作為this關鍵詞的對比概念而存在。that關鍵詞可以用來引用另一個對象的引用。當我們需要比較兩個對象是否相等時,可以使用that關鍵詞來引用另一個對象的屬性或方法。以下是一個使用that關鍵詞的例子:
class Person { String name; public Person(String name) { this.name = name; } public boolean equals(Person p) { return this.name.equals(p.thatName()); } public String thatName() { return "Tom"; } } Person p1 = new Person("Tom"); Person p2 = new Person("Jerry"); if (p1.equals(p2)) { System.out.println("p1 and p2 are the same person"); } else { System.out.println("p1 and p2 are different people"); }
在上面的例子中,我們定義了一個equals方法,使用that關鍵詞來引用傳遞進來的另一個Person對象的thatName方法,該方法返回了一個固定的字符串"Tom"。在比較兩個Person對象是否相等時,我們使用this關鍵詞引用當前對象的name屬性,使用that關鍵詞引用另一個對象的thatName方法得到的name屬性。如果這兩個name屬性相等,那么equals方法就返回true,否則返回false。