安卓:变量在 while 循环中值不正确
2022-09-02 22:43:46
在 Android Studio 中开发 Android 应用时,while 循环中使用的变量具有不正确的值。我在测试用例中将其简化为一个非常简单的案例:
- 在 Android Studio 中创建新项目,空白活动
- 将以下代码添加到主活动中
方法 onStart:
@Override
public void onStart() {
super.onStart();
int count = 2;
int index = 1;
int value = 23;
Log.i("test", "value before = " + value);
while (index < count) {
Log.i("test", "value in while loop = " + value);
index++;
value = 0;
}
}
执行测试应用时的输出为:
value before = 23
value in while loop = 0
而结果应该是
value in while loop = 23
调试时,结果符合预期(“while 循环中的值 = 23”),但在常规调试版本中,这是错误的。主活动类的拆解代码看起来不错,变量“value”的值在 while 循环体的末尾设置为 0。当 while 循环体中的某些代码或函数使用变量“value”时,它将具有值 0 而不是 23。在测试用例中,我使用 Log 语句来简化。
当我改变行时没有出错
value = 0;
自
if (value == 23) {
value = 0;
}
或者当我删除该行时
value = 0;
所以它看起来像一些优化错误。但是,做了什么优化可能导致这种情况呢?它使代码不可靠。