# 1 楼答案 可以使用带标签的BREAK语句: search: for (i = 0; i < arrayOfInts.length; i++) { for (j = 0; j < arrayOfInts[i].length; j++) { if (arrayOfInts[i][j] == searchfor) { foundIt = true; break search; } } } 然而,在正确设计的代码中,不应该需要GOTO功能
# 2 楼答案 虽然一些评论人士和反对者认为这不是goto,但从下面的Java语句生成的字节码确实表明,这些语句确实表达了goto语义 具体来说,第二个示例中的do {...} while(true);循环由Java编译器优化,以避免评估循环条件 向前跳 label: { // do stuff if (check) break label; // do more stuff } 字节码: 2 iload_1 [check] 3 ifeq 6 // Jumping forward 6 .. 向后跳 label: do { // do stuff if (check) continue label; // do more stuff break label; } while(true); 字节码: 2 iload_1 [check] 3 ifeq 9 6 goto 2 // Jumping backward 9 ..
# 3 楼答案 只是为了好玩,here是Java中的GOTO实现 Example: 1 public class GotoDemo { 2 public static void main(String[] args) { 3 int i = 3; 4 System.out.println(i); 5 i = i - 1; 6 if (i >= 0) { 7 GotoFactory.getSharedInstance().getGoto().go(4); 8 } 9 10 try { 11 System.out.print("Hell"); 12 if (Math.random() > 0) throw new Exception(); 13 System.out.println("World!"); 14 } catch (Exception e) { 15 System.out.print("o "); 16 GotoFactory.getSharedInstance().getGoto().go(13); 17 } 18 } 19 } Running it: $ java -cp bin:asm-3.1.jar GotoClassLoader GotoDemo 3 2 1 0 Hello World! 我是否需要添加“不要使用它!”
# 1 楼答案
可以使用带标签的BREAK语句:
然而,在正确设计的代码中,不应该需要GOTO功能
# 2 楼答案
虽然一些评论人士和反对者认为这不是goto,但从下面的Java语句生成的字节码确实表明,这些语句确实表达了goto语义
具体来说,第二个示例中的
do {...} while(true);
循环由Java编译器优化,以避免评估循环条件向前跳
字节码:
向后跳
字节码:
# 3 楼答案
只是为了好玩,here是Java中的GOTO实现
我是否需要添加“不要使用它!”