Ton*_*tto 3 java variables initialization declaration
我想在更深层次上理解我是否缺少了解Java何时需要初始化变量与简单声明的东西.在下面的代码中,变量'row'不需要为编译和运行赋值,但是,变量'column'可以.
注意:这个程序没有任何用处 - 它被修剪为只显示这个问题所必需的内容,以免浪费人们宝贵的时间.
这是代码片段:
int row; //row doesn't need initialization
int column=0; //column does need initialization
for (row=0; row<2; row++){
for (column=0; column<2; column++){
}
}
System.out.print("Col:" + column + " row:" + row);
Run Code Online (Sandbox Code Playgroud)
为什么row编译w/o初始化在顶部,但Java认为column"可能没有初始化."?
row = 0保证表达式(来自外部循环),因此row变量将始终在使用前初始化.的column,当且仅当,外循环将重复至少一次变量将被初始化.换句话说,不保证评估表达式column = 0(来自内部循环).