代码如下: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 错误才消失。但是这个我有点不明白,我明明在里面赋值了,为什么是错的?
2 回答
心有法竹
TA贡献1866条经验 获得超5个赞
因为编译器在检查的时候判断局部变量index可能未初始化,表达式i<10不是一个constant expression,编译器根据定义的rule无法确定index一定初始化了,所以编译器会提示“Variable index might not have been initialized”。具体可以参考《Java语言规范》的第16章“Definite Assignment”。
添加回答
举报
0/150
提交
取消