java“this”关键字正确使用

我的构造函数中有一个使用关键字this的Fraction类:

public Fraction(int numerator, int denominator) { this.numerator = numerator; this.denominator = denominator; adjustSigns(); if(this.denominator == 0 ) { throw new FractionException(" Undefined Fraction "); } } 

我也有一个方法:

  public FractionInterface multiply(FractionInterface secondFraction) { Fraction second = (Fraction) secondFraction; Fraction answer = new Fraction ((numerator * second.numerator), (denominator * second.denominator)); answer.reduceToLowestTerms(); return answer; } 

我编译和运行时上面的方法工作正常但是这个版本:

  public FractionInterface multiply(FractionInterface secondFraction) { Fraction second = (Fraction) secondFraction; Fraction answer = new Fraction ((this.numerator * second.numerator), (this.denominator * second.denominator)); answer.reduceToLowestTerms(); return answer; } 

我的问题是哪一个是正确的? 如果在我的构造函数中使用“this”关键字,我还必须在我的方法中使用它吗? 再次,他们都工作正常,做他们应该做的事情,但我想知道哪种方式是正确的方式。 谢谢。

如果要区分局部变量和同名成员,则必须明确使用this 。 否则,它是可选的。

如果没有这个,构造函数将不会将传递值分配给实例成员this. 前缀,因为方法参数会隐藏实例成员。 如果你给参数赋予不同的名字,你可以不用this.

 public Fraction(int num, int denom) { numerator = num; denominator = denom; ... } 

两个multiply版本都是相同的。

你提到的两种情况都可以。

使用this是一个很好的做法,因为我们的英语心态更具可读性。当我们说this.some_variable ,我们得到当前类中some_variable的心理图像

this关键字也有助于避免变量阴影

我认为你对“this”关键字的工作原理有点混淆。

让我举一个例子:

这个

 public class testing { private int a; private int b; testing(int a,int b){ this.a = a; this.b = b; } } 

是相同的:

 public class testing { private int a; private int b; testing(int x,int y){ this.a = x; this.b = y; } } 

如果我们这样做,第二个当然更容易放到:

 public class testing { private int a; private int b; testing(int x,int y){ a = x; b = y; } }