簡單明顯的答案是因爲編譯器不允許你。但現在讓我們更進一步 - 爲什麼會這樣?
這裏的原因是兩次聲明一個變量是一個錯誤的跡象。它通常意味着三件事之一:
- 您的變量名稱不夠具體。也許你曾兩次使用
int length
,它會咆哮着你。你可能應該讓你的名字更具體到它的長度,例如int originalLength
和int extendedLength
當複製一個數組或其他東西時。
- 你的方法太長。爲什麼你的方法如此長以至於你需要兩個相同的變量?有可能你在複製代碼,所以把它整合到一個方法中。
- 你還沒有真正想過你的方法。這是2號的延伸,但事實是,在編寫之前你應該確定一種方法的作用。如果你添加一個已經存在的變量,這可能意味着你還沒有確定這個方法在做什麼。
這些都是主要的代碼異味,可能是下面錯誤的來源。 (並且不遠處)!在每種情況下,允許您兩次聲明一個變量會導致模糊,如果它阻止了編譯,它將會被阻止。
現在,這是否意味着沒有情況可能會很好?當然。可能有。也許你已經覆蓋了所有的基礎,並且你完全確定重用這個變量是可以的。在這種情況下,只需重新分配它而不是重新聲明它。就個人而言,我建議不要這樣做,但如果你願意,這是你的拍攝腳。:)
不downvoting,但這是一個主觀的問題。這正是java創建者決定編寫java編譯器和語言語法的方式。 –
謝謝!我猜這是有點主觀 – whales
@aguibert主觀的問題不是自動的壞問題。 https://blog.stackoverflow.com/2010/09/good-subjective-bad-subjective/ – corsiKa