當類的屬性和類方法的形參名字相同時,類方法裏面的變量是指向類屬性還是類方法的形參呢?
這是我剛剛偶爾發現的問題,特地研究了一下。
例如,我現在寫一個Test類:(注意:這裏沒有用this.count,因爲this.count是肯定指向類屬性的。)
<span style="font-size:18px;">public class Test {
public static void main(String[] args) {
SecondClass secondClass=new Test.SecondClass(100);
System.out.println(secondClass.count);
System.out.println(secondClass.second);
}
static class SecondClass{
int count=1;
int second=0;
public SecondClass(int count) {
count=count; //左部count是哪個?右部count又是哪個?
second=count; //調用的是哪個count?
}
}
}</span>
當形參編程mCount的時候呢?
static class SecondClass{
int count=1;
int second=0;
public SecondClass(int mCount) {
count=count;
second=count;
}
}
第一段代碼的運行結果是:
count=1
second=100
得到的結果是,類屬性count並沒有被類方法調用,而second=count;語句調用的是形參。
第二段代碼的運行結果是:
count=1
second=1
得到的結果說明,在沒有類屬性跟類方法的形參重名的情況下,調用的纔是類屬性。
所以,在重名情況下,類方法的形參優先級比類屬性更高!這就告誡我們,當調用類屬性的時候,儘量使用this.變量!這樣纔不易造成混亂…保持良好的變成習慣,嗯!