goto語句在java中作為保留字,並沒有實現它。但在其他語言中(c語言),goto是個合法的關鍵字
java中支援的break和continue雖然能實現goto語句的功能但是我個人總結他們的用法大同小異
首先在java中對標號的要求非常嚴格
標號必須在一個迴圈的前面,意思是這個迴圈的名字叫outer(假設標號名為outer),並且這一行後面不能有任何語句了;
而break和continue是和迴圈語句結合使用的,因此實際上語句標籤的使用也是和迴圈緊密結合的。
語句標籤在被使用的情況,只能定義在迴圈迭代語句之前,否則編譯出錯
因此帶標號的break、continue 只能在迴圈體或者選擇體(if等)之中跳轉
而(c語言)goto的用法則比較靈活,(c語言)中的標號可以在任意一個合法語句的前面
因此goto可以在一個函數(c語言)中任意位置跳轉(當然不能違反goto語句的合理用法例如不能再嵌套之間跳轉等)
因此 個人總結
帶標號的break、continue局限於迴圈體中跳轉
帶標號的goto 可以在整個方法中(c語言函數)跳轉
goto比帶標號的break、continue用法靈活 正因為太靈活了
使程式的邏輯結構變的複雜,流程不夠清晰,程式的可讀性下降
所以java中把goto 保留了
goto語句在java中作為保留字,並沒有實現它。但在其他語言中(c語言),goto是個合法的關鍵字
java中支援的break和continue雖然能實現goto語句的功能但是我個人總結他們的用法大同小異
首先在java中對標號的要求非常嚴格
標號必須在一個迴圈的前面,意思是這個迴圈的名字叫outer(假設標號名為outer),並且這一行後面不能有任何語句了;
而break和continue是和迴圈語句結合使用的,因此實際上語句標籤的使用也是和迴圈緊密結合的。
語句標籤在被使用的情況,只能定義在迴圈迭代語句之前,否則編譯出錯
因此帶標號的break、continue 只能在迴圈體或者選擇體(if等)之中跳轉
而(c語言)goto的用法則比較靈活,(c語言)中的標號可以在任意一個合法語句的前面
因此goto可以在一個函數(c語言)中任意位置跳轉(當然不能違反goto語句的合理用法例如不能再嵌套之間跳轉等)
因此 個人總結
帶標號的break、continue局限於迴圈體中跳轉
帶標號的goto 可以在整個方法中(c語言函數)跳轉
goto比帶標號的break、continue用法靈活 正因為太靈活了
使程式的邏輯結構變的複雜,流程不夠清晰,程式的可讀性下降
所以java中把goto 保留了