Java流程控制语句Q&A
2021-08-26 15:52:42 61 举报
AI智能生成
登录查看完整内容
Java流程控制语句Q&A
作者其他创作
大纲/内容
Q: break后面加一个label标签是做什么的?像下面这样: ABC: while(t++<5){ for(int i=0;i<n;i++){ if(i==1) break ABC; } }A: break+label标签 是用于从内部退出多层循环(不再进入循环)
break语句
Q: continue后面加一个label标签是做什么的?像下面这样: ABC: while(t++<5){ for(int i=0;i<n;i++){ if(i==1) continue ABC; } }A: 直接contine到ABC的后面,即用于contine到最外层循环(继续进入循环)
continue语句
Q: switch的default陷阱1,以下输出什么 int i = 0; switch (i) { default: System.out.println(\"default\"); case 0: System.out.println(\"0\"); case 1: System.out.println(\"1\"); }A: 输出\"0 1\"
Q: switch的default陷阱2,以下输出什么 int i = 3; switch (i) { default: System.out.println(\"default\"); case 0: System.out.println(\"0\"); case 1: System.out.println(\"1\"); }A: 输出\"default 0 1\"
1. default都是最后再匹配的 2. default是没有匹配项时才匹配 3.如果case没有break、return, 那么会一直往下执行, 直到遇到break、return 4.case后面不能跟变量,只能是常量 5.匹配到default之后,如果没有break还是会一直往下走
switch的default陷阱
Q: return-finally陷阱1: finally能通过修改变量,来更新return的变量值吗int f() { int a = 1; try { return a; } finally { a=2; }}A: 不能, f返回1。finally里改变参数的值, 但这时的返回值已经在return的内存位中了, 不能被改变
Q: return-finally陷阱2: finally里也return时,返回哪个?int f() { try { return 1; } finally { return 2; }}A:返回finally里的,返回2。finally里return的话, 可以改变返回值
Q:throw异常的时候,在finally中做return,那么异常还会抛出吗?static int f() { try { int a = 1/0; return a; } catch (Exception e) { throw new RuntimeException(e); } finally { return -1; }}public static void main(String[] args) { System.out.println(f());}A:不会,返回-1.即finaly中做return会中断throw,因此永远不要在finally中去做return操作
Q: 子类覆写基类方法时 , 能throws基类方法中不存在的异常吗?像下面这样:font color=\"#0000ff\
try-finally陷阱
Java流程控制语句Q&A
0 条评论
回复 删除
下一页