摘要:流程管制语句就是用来控制程序中各语句执行的程序,上面将具体介绍 java 流程管制语句。
本文分享自华为云社区《java 知识点问题精选之流程管制语句》,原文作者:breakDraw。
流程管制语句就是用来控制程序中各语句执行的程序,上面将具体介绍 java 流程管制语句。
Q: break 前面加一个 label 标签是做什么的?像上面这样:
ABC:while(t++<5){for(int i=0;i<n;i++){if(i==1)
break ABC;
}
}
A: break+label 标签 是用于从外部退出多层循环的,下面的例子就是间接从 for 外部间接退出到 while 的里面了。
Q: continue 前面加一个 label 标签是做什么的?像上面这样:
ABC:while(t++<5){for(int i=0;i<n;i++){if(i==1)
continue ABC;
}
}
A: 间接 contine 到 ABC 的前面,即用于 contine 到最外层循环,即走到 while(t++<5)那边持续走
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″,default 都是最初再匹配的。
Q:case 前面能够跟变量吗?
例如
case a:
case b:
这样子
A:不能够,case 前面只能跟常量。
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″,匹配到 default 之后,如果没有 break 还是会始终往下走。
Q: switch()能辨认哪些类型?
A:
JDK1.0-1.4 数据类型承受 byte short int char
JDK1.5 数据类型承受 byte short int char enum(枚举)
JDK1.7 数据类型承受 byte short int char enum(枚举),String 六种类型
PS:下面提到的根本类型的包装类型也是反对的。
Q:return-finally 陷阱 1:finally 能通过批改变量,来更新 return 的变量值吗
int f() {
int a = 1;
try {return a;}
finally {a=2;}
}
A:不能,f 返回 1。
(PS:留神下如果是 a 援用的话,不能扭转返回的 a 的援用,然而能够扭转 a 的援用里的属性)
Q:return-finally 陷阱 2:finally 里也 return 时,返回哪个?
int f() {
try {return 1;}
finally {return 2;}
}
A:返回 finally 里的,返回 2。
Q:for-each 和 for-index 哪个快?(就是 for(num:nums)和 for(int i=0;i<n;i++))
A:和场景无关。援用评论区 2 个小伙伴给的信息:
- 若实现了 RandomAccess 接口,那么应用 for-index 是优于 for-each 的吧
-
for-each 比 for-index 快,是不是能够这样思考:
for-each 是通过外部的迭代器进行遍历的,相似于索引;for-index 是通过 index 计算偏移量的形式遍历。—— 这样一来:对 ArrayList 这样的间断构造来说,for-each 和 for-index 的效率应该并驾齐驱;而对 LinkedList 这样的链式列表,for-each 的索引劣势就体现进去了。
Q:什么时候没法用 for-each 代替 for-index?
A: 须要往迭代器中插入元素或者删除元素时。(这会毁坏迭代器构造)
点击关注,第一工夫理解华为云陈腐技术~