myObj a;
int b = 1;
int c = 1;
if(b == c) {
a = new myObj(5);
b = 2;
}
if(a.getValue() == 5) {
....
}
即使a
將在它到達第二個if語句時始終被初始化,但我仍然無法編譯該程序,除非我在開始時聲明它。爲什麼「變量可能未被初始化」阻止編譯?
另外,如果我把myObj a = null
,它將工作,這基本上是一樣的,如果我剛離開它作爲myObj
,但不給出錯誤或防止編譯。
爲什麼「變量可能沒有被初始化」一個阻止編譯的錯誤,而不是一個警告? myObj a;
和myObj a = null;
之間的區別是什麼?
http://programmers.stackexchange.com/questions/257857/what-is-the-difference-between-uninitialized-object-variable-and-object-variable – OldProgrammer
我想這只是爲了幫助程序員捕捉可能的錯誤(你通常想避免NRE)。 – Mephy
'myObj a;'完全沒有價值。如果你沒有在那裏放置一個值,它只會是隨機垃圾。你必須手動將它清空(不像實例和類變量)。 – markspace