2013-12-15 139 views
1

我想知道是給定值的局部變量時局部變量初始化錯誤

這就是爲什麼我得到一個錯誤的局部變量在以下情況下

int i=10; 
int j; 

if(i==10) 
{ 
j=100; 
} 
System.out.println(j);//error 

這裏未初始化的編譯器不夠聰明即使在上面的行中明確地聲明瞭i = 10;

,因爲我覺得我沒有給出在編譯時價值我得到這個初始化錯誤

是給出10作爲其在運行時的值我基本類型int?

+0

如果你知道'i'將會是'10',爲什麼要有'if'語句? –

+3

把'int i = 10'改成'final int i = 10',你就會知道。 –

+0

@Rohit @Rohit @Rohit我知道,因爲它會是一個編譯時間常量,編譯器知道它的值,這就是我所要求的,因爲我沒有聲明它是最終的,這意味着它在運行時被賦予了值,並且爲什麼編譯器不確定是否if條件在編譯時肯定是真的,這會導致錯誤 – unknown

回答

2

因爲i是局部變量,int i=10在運行時執行,所以在編譯時,編譯器不知道那的i值,這樣編譯器不能確定if (i==10)必須是真實的,它只能承擔兩個條件。如果i不等於10,那麼println將使用未初始化的j,這就是您得到該錯誤的原因。

+0

@Thanks埃文我也在想同樣的多數民衆贊成在爲什麼我明確地問我是否在運行時給予價值 – unknown

0

嘗試刪除if語句中的大括號。

+0

你希望通過這樣做來實現什麼? – Justin

+0

沒什麼,我只是想知道什麼時候我給的價值,我認爲它不是在編譯時給出的,這就是爲什麼編譯器無法評估是否如果陳述是真實的 – unknown

1

您必須在執行if語句之前初始化j。所有的局部變量都必須被定義和初始化。

在你的程序中,因爲編譯器不能識別i的值,所以i == 10是沒有意義的,並給出錯誤。

+0

我知道謝謝你的關注:) – unknown