[英]error: variable might not have been initialized
我找不到我得到的原因:
變量可能尚未初始化
范例1:
class Test {
public static void main(String[] args) {
int i = 10;
int j;
if (i == 10) {
j = 20;
}
System.out.println(j);
}
}
Test.java:11: error: variable j might not have been initialized System.out.println(j); ^ 1 error
范例2:
class Test {
public static void main(String[] args) {
int i = 10;
int j;
if (i == 10) {
j = 20;
} else {
j = 30;
}
System.out.println(j);
}
}
輸出:
20
我的疑問是在第二個示例中,如何初始化j
?
第一種情況,如果i!= 10 j在執行期間不會初始化
System.out.println(j);
在第二個示例中,j將始終具有一個值(i!= 10 j將為30)
System.out.println(j);
注意
**might not** be initialized
代替int j;
您必須具有int j = null;
。
在第二個示例中,如何初始化j?
j
已初始化,因為您提供了所有可能情況的路徑...
i
等於10
( if(i == 10) {
)行 i
不等於10
(第} else {
行, } else {
) 無論如何, j
都會被初始化。
在您的第一個解決方案中,情況並非如此。 如果i
不等於10
,那么j將不會被初始化,Java不喜歡這樣。 Java不關心i
等於 10
在你的邏輯,它只是在乎存在這樣的情況的情況下j
可能不被初始化。
對於局部變量,JVM將不提供任何默認值,我們必須在使用該變量之前顯式執行初始化。
在示例1中:不能保證在運行時在邏輯塊內初始化局部變量,在您的情況下,只有if語句( 如果它不是true)則初始化將如何發生 ,因為您會遇到此錯誤。
在示例2中,您同時使用了if,else語句,因此如果condition為true,則變量j將被初始化,如果condition為false,則j也將被初始化。 (在示例2中,通過if或else將初始化變量j ),因為這樣不會導致任何錯誤。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.