扫码关注官方订阅号
int x; int y = 3; if(y < 4) { x = 2; } System.out.print(x);
这个代码为什么会报错?
闭关修行中......
虽然y已经赋值为3了,判断y<4时,编译器仍然无法确定这个时候y还是3(比如多线程改变了y的值),所以y<4不一定是true,这样的话x无法初始化,编译器报错。可以改成:
final y = 3;
这样编译器会知道y的值不会改变, 也就能确认y<4一定是true,x能初始化
x并没有初始化,这里并不会报错,后面直接使用x就会报错。
微信扫码关注PHP中文网服务号
QQ扫码加入技术交流群
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号
PHP学习
技术支持
返回顶部
虽然y已经赋值为3了,判断y<4时,编译器仍然无法确定这个时候y还是3(比如多线程改变了y的值),所以y<4不一定是true,这样的话x无法初始化,编译器报错。
可以改成:
这样编译器会知道y的值不会改变, 也就能确认y<4一定是true,x能初始化
x并没有初始化,这里并不会报错,后面直接使用x就会报错。