2014-02-20 72 views
0

'this'用於訪問當前正在使用的對象。由於該方法將訪問正在傳遞的當前對象,因此它具有優於傳遞對象本身的優點。爲什麼使用'this'關鍵字是必要的?

+7

請添加描述源代碼的具體問題情況。 – Smutje

+0

這是用來訪問當前類變量或方法。用於區分實例變量和局部變量。 –

回答

0

它有超過傳遞對象本身,因爲 方法去訪問被當前對象有什麼優勢通過 反正。

按你的問題上的優勢用this關鍵字在傳遞對象本身的this是而當傳遞可能會或可能不會final對象在Java中final變量。作爲final變量,我可以清楚地看到使用this超過傳遞對象本身的兩個主要優點。

  1. 無法爲this的當前實例分配任何新值。

    this = new Foo(); //compilation error; cannot assign value to final variable : this

  2. 它可以在同步塊中。

    synchronized(this){ /*this synchronized block will be locked on current instance*/ }

除了這方面的問題成立,有在Java中使用this的許多優點,你可以從其他的答案弄清楚。

Shishir

1

this很少真正需要 - 如果我記得是對的,只有當你有一個與本地變量同名的字段,並且你想明確指定你想要訪問該字段而不是局部變量時。

2

它可以在很多情況下幫助。其中最明顯的是在構造函數,當參數名稱相同的實例變量:

public final class Foo 
{ 
    private final int bar; 

    public Foo(final int bar) 
    { 
     this.bar = bar; // MUST specify "this" here 
    } 
} 
3

可以有很多this關鍵字的使用。在java中,這是一個引用當前對象的引用變量。 this的使用關鍵字

以下是關於this關鍵字的6種用法。

  1. 此關鍵字可用於引用當前類實例變量。
  2. this()可用於調用當前的類構造函數。
  3. 此關鍵字可用於調用當前類方法(隱式地)
  4. 這可以作爲方法調用中的參數傳遞。
  5. 這可以在構造函數調用中作爲參數傳遞。
  6. 這個關鍵字也可以用來返回當前類的實例。

瞭解更多關於this Keywork

+0

如果這個答案是基於像[這一個](http://javapapers.com/core-java/explain-the-java-this-keyword/)這樣的文章,你應該包括它的信息。 – Pshemo

+0

@Pshemo完成。並感謝提醒。 – Salah

0

this用於訪問當前類variablemethods。用於區分實例變量(ivars)和局部變量。

0

如果我理解正確的話,你想要做

static void f(MyClass self) { 
    // access current class object using self 
} 

,而不是

void f() { 
    // access current class object using this 
} 

並調用該方法這樣的

MyClass.f(instance); 

istead這

instance.f(); 

儘管這實際上是可能的,但如果需要訪問它,則必須始終將當前對象作爲參數傳遞。爲什麼不把對象隱式地傳遞給非靜態方法?這是java所做的。

當您查看構造函數時,您會注意到無法將當前類對象傳遞給它,因爲在構造函數被調用之前對象不存在。所以你不能訪問構造函數中的當前類對象。

相關問題