我想知道是給定值的局部變量時局部變量初始化錯誤
這就是爲什麼我得到一個錯誤的局部變量在以下情況下
int i=10;
int j;
if(i==10)
{
j=100;
}
System.out.println(j);//error
這裏未初始化的編譯器不夠聰明即使在上面的行中明確地聲明瞭i = 10;
,因爲我覺得我沒有給出在編譯時價值我得到這個初始化錯誤
是給出10作爲其在運行時的值我基本類型int?
我想知道是給定值的局部變量時局部變量初始化錯誤
這就是爲什麼我得到一個錯誤的局部變量在以下情況下
int i=10;
int j;
if(i==10)
{
j=100;
}
System.out.println(j);//error
這裏未初始化的編譯器不夠聰明即使在上面的行中明確地聲明瞭i = 10;
,因爲我覺得我沒有給出在編譯時價值我得到這個初始化錯誤
是給出10作爲其在運行時的值我基本類型int?
因爲i
是局部變量,int i=10
在運行時執行,所以在編譯時,編譯器不知道那的i
值,這樣編譯器不能確定if (i==10)
必須是真實的,它只能承擔兩個條件。如果i
不等於10,那麼println
將使用未初始化的j
,這就是您得到該錯誤的原因。
@Thanks埃文我也在想同樣的多數民衆贊成在爲什麼我明確地問我是否在運行時給予價值 – unknown
您必須在執行if語句之前初始化j。所有的局部變量都必須被定義和初始化。
在你的程序中,因爲編譯器不能識別i的值,所以i == 10是沒有意義的,並給出錯誤。
我知道謝謝你的關注:) – unknown
如果你知道'i'將會是'10',爲什麼要有'if'語句? –
把'int i = 10'改成'final int i = 10',你就會知道。 –
@Rohit @Rohit @Rohit我知道,因爲它會是一個編譯時間常量,編譯器知道它的值,這就是我所要求的,因爲我沒有聲明它是最終的,這意味着它在運行時被賦予了值,並且爲什麼編譯器不確定是否if條件在編譯時肯定是真的,這會導致錯誤 – unknown