0

私はJAVAの初心者でありthis、Javaでの定義と完全に混同しています。私はそれが関係者に言及していることを読みましたcurrent object

しかし、それはどういう意味ですか?オブジェクトを?Whoに割り当て ます そして、コードを書いているときに、現時点での価値をthisどのように知ることができますか。what should bethis

一言で言えば、私は完全に混乱していthisます。誰かが私の混乱を取り除くのを手伝ってくれますか?私はそれthisが非常に役立つことを知っています。

4

5 に答える 5

2

次の2つのリンクをたどってください:-

http://javapapers.com/core-java/explain-the-java-this-keyword

http://docs.oracle.com/javase/tutorial/java/javaOO/thiskey.html

于 2012-10-10T12:06:28.543 に答える
1

thisは、それ自体を表すJavaのキーワードobjectです。これは基本でカバーされています。おそらく、あなたはそれに良い記事を閲覧することができます。Oracleから1つ提供しています(以前のSun Javaチュートリアル)

于 2012-10-10T12:07:56.090 に答える
1

thisクラス内の変数を参照するために使用されます。例えば

public class MyClass {
    private Integer i;

    public MyClass(Integer i) {
      this.i = i;
    }
}

このコードでは、クラスのフィールドiにパラメータiを割り当てています。これがない場合は、パラメータiがそれ自体に割り当てられます。通常、異なるパラメーター名があるため、これは必要ありません。例えば

public class MyClass {
    private Integer i;

    public MyClass(Integer j) {
      this.i = j;
      //i = j; //this line does the same thing as the line above.
    }
}

this上記の例では、前にいる必要はありませんi

要約すると、これを使用してすべてのクラスフィールドの前に置くことができます。ほとんどの場合、そうする必要はありませんが、何らかの名前のシャドウイングがある場合thisは、フィールドを参照していることを明示的に示すために使用できます。

thisオブジェクトを参照するために使用することもできます。これは、内部クラスを処理していて、外部クラスを参照する場合に使用されます。

于 2012-10-10T12:08:04.280 に答える
1

これは簡単です。

現在のオブジェクトは、その時点でコードが実行されているオブジェクトです。したがって、これはthisコードが表示されるクラスのインスタンスです。

実際、オブジェクトとローカルスコープに同じ識別子がない限り、this通常は削除でき、まったく同じように機能します。

これを削除できない例

public class myClass {
  private int myVariable;
  public setMyVariable(int myVariable) {
    this.myVariable = myVariable; // if you do not add this, the compiler won't know you are refering to the instance variable
  }
  public int getMyVariable() {
    return this.myVariable;  // here there is no possibility for confussion, you can delete this if you want
  }
}
于 2012-10-10T12:09:13.333 に答える
-1

this現在のインスタンスクラスを参照します。this通常、アクセサに使用されます。例えば:

public void Sample{
 private String name;

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

これは、メソッドのパラメーターthisではなく、クラスSample変数名を具体的に指すために使用されていることに注意してください。setName

于 2012-10-10T12:06:37.713 に答える