我知道變量作用域被塊{
的開始和塊}
的結尾包圍。如果在塊內聲明瞭相同的變量,則會發生編譯錯誤Variable already defined
。但看看下面的例子。類範圍變量vs方法範圍變量
public class Test{
int x=0;// Class scope variable
public void m(){
int x=9; //redeclaration of x is valid within the scope of same x.
if(true){
int x=7; // but this redeclaration generates a compile time error.
}
}
這裏,x
可以在方法中重新聲明,儘管它在類中聲明。但在if
區塊中,x
無法重新聲明。
爲什麼重新聲明類作用域變量不會產生錯誤,但方法作用域變量重新聲明會產生錯誤?
是的,它只是碰巧,這是允許的。字段和變量是內存中具有相同標識符的不同空間。海事組織不應該被允許,沒有人應該這樣做。 – Radiodef