先直接上一段代碼
public class MethodTest01{ public static void main(String[] args){ } public static int test(){ boolean flag = true; if(flag = true){ return 1; } } }
初一看好像並沒有什么問題,在test方法中也有返回值,但是在編譯后:
並沒有返回值。。。
在test()方法中,編譯器只能識別flag是一個boolean類型,但是不能識別字面值,不能識別到底是true還是false,所以編譯器認為可能執行,也可能不執行,所有編譯器為了確保程序正確性,提示錯誤。
修改后:
第一種修改
public class MethodTest01{ public static void main(String[] args){ } public static int test(){ boolean flag = true; if(flag = true){ return 1; }else{ return 0; } } }
第二種修改
public class MethodTest01{ public static void main(String[] args){ } public static int test(){ boolean flag = true; if(flag = true){ return 1; } return 0; } }
第三種修改使用三目運算符
public class MethodTest01{ public static void main(String[] args){ } public static int test(){ boolean flag = true; return flag ? 1:0; } }