虽然y已经赋值为3了,判断y<4时,编译器仍然无法确定这个时候y还是3(比如多线程改变了y的值),所以y<4不一定是true,这样的话x无法初始化,编译器报错。可以改成: final y = 3; 这样编译器会知道y的值不会改变, 也就能确认y<4一定是true,x能初始化
虽然y已经赋值为3了,判断y<4时,编译器仍然无法确定这个时候y还是3(比如多线程改变了y的值),所以y<4不一定是true,这样的话x无法初始化,编译器报错。
可以改成:
这样编译器会知道y的值不会改变, 也就能确认y<4一定是true,x能初始化