7

些細でおそらくばかげた質問で申し訳ありませんが、メソッドを使用するときや何かにアクセスするときに「this」プレフィックスをいつ使用するかについて少し混乱しています。

たとえば、ここで #4 を見ると: http://apcentral.collegeboard.com/apc/public/repository/ap_frq_computerscience_12.pdf

そして、ここで解決策を見ていきます: http://apcentral.collegeboard.com/apc/public/repository/ap12_computer_science_a_q4.pdf

パート a) の 1 つの解決策は次のとおりです。

public int countWhitePixels() { 
int whitePixelCount = 0; 
    for (int[] row : this.pixelValues) { 
      for (int pv : row) { 
      if (pv == this.WHITE) { 
      whitePixelCount++; 
      }
     } 
   } 
return whitePixelCount; 
} 

一方、別の解決策は

 public int countWhitePixels() { 
 int whitePixelCount = 0; 
     for (int row = 0; row < pixelValues.length; row++) { 
      for (int col = 0; col < pixelValues[0].length; col++) { 
      if (pixelValues[row][col] == WHITE) { 
      whitePixelCount++; 
     } 
   } 
 } 
 return whitePixelCount; 
} 

これが私の質問です。彼らが「これ」を使うのはなぜですか。最初のソリューションでは pixelValues と WHITE にアクセスするときのプレフィックスですが、2 番目のソリューションではそうではありませんか? 「これ」は暗示だと思っていたので、「これ」と言った方が正しいでしょうか。最初の解決策にはまったく必要ありませんか?

手伝ってくれてどうもありがとう :)

4

4 に答える 4

4

Java™ チュートリアルから

これをフィールドで使用する

this キーワードを使用する最も一般的な理由は、フィールドがメソッドまたはコンストラクターのパラメーターによって隠されているためです。

たとえば、 Point クラスは次のように記述されていました

public class Point {
    public int x = 0;
    public int y = 0;

    //constructor
    public Point(int a, int b) {
        x = a;
        y = b;
    }
}

しかし、次のように書くこともできます:

public class Point {
    public int x = 0;
    public int y = 0;

    //constructor
    public Point(int x, int y) {
        this.x = x;
        this.y = y;
    }
}
于 2013-05-01T01:04:19.957 に答える