java赋值。。。。。。。。。

在if循环中不是已经给i1赋值了吗,为什么下面for循环中还会显示i1未被赋值?。zzzzzzzzzzzz图片说明

编译器不能确定if分支肯定走进去。所以必须在if的所有分支(你只写了else分支)都赋值,或者更好的做法,定义的时候就赋值。

你打印的是 字符串i1, 不是变量i1

一个好的习惯是定义就赋值
int i1 = 0, i2 = 0, i3 = 0;

应该是要设置一个默认值

你想想如果只执行if没有执行else的话,那i1等于几?所以最好在定义的时候就先赋值

如果没走esle 不就没赋值么?

遇到判断条件,系统检测会屏蔽掉判断条件内的情况,系统编译检测实际上你只有声明变量没有赋值,需要赋一个初始值,类型范围内的随意!

如果你那个条件语句没有执行else那一分支i1就不会赋值

在if循环中只有else给i1赋值了,if并没有,所以,当你的程序走if判断并进行循环的时候,i1没有被赋值