【JAVA小白】 关于已经赋值,但是系统说可能拿不到的值

代码如下:

package com.helloworld;public class HelloWorld {    
    public static void main(String[] args) {        
        int index;                //定义了一个变量index
        
        for (int i = 0 ; i < 10 ; i++) {            
            if (i == 5 ) {
                index = i;     //当i等于5的时候,赋值给index
            }
        
        }
        System.out.println("index是" + index);    
            //系统显示这里错误,但是我有点不明白,
            //这个地方for循环已经结束,index是确定可以拿到值的,
            //为什么错误呢
    }
    
}

只有把一开始的变量声明,int index 改成index index = 0 错误才消失。
但是这个我有点不明白,我明明在里面赋值了,为什么是错的?


守着星空守着你
浏览 821回答 2
2回答

宝慕林4294392

java局部变量要先初始化才能用。。。

心有法竹

因为编译器在检查的时候判断局部变量index可能未初始化,表达式i<10不是一个constant expression,编译器根据定义的rule无法确定index一定初始化了,所以编译器会提示“Variable index might not have been initialized”。具体可以参考《Java语言规范》的第16章“Definite Assignment”。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java