摘要:流程控制語句就是用來控制程序中各語句執行的順序,下面將詳細介紹java流程控制語句。
本文分享自華爲雲社區《java知識點問題精選之流程控制語句》,原文做者:breakDraw 。java
流程控制語句就是用來控制程序中各語句執行的順序,下面將詳細介紹java流程控制語句。segmentfault
Q: break後面加一個label標籤是作什麼的?像下面這樣:dom
ABC: while(t++<5){ for(int i=0;i<n;i++){ if(i==1) break ABC; } }
A: break+label標籤 是用於從內部退出多層循環的, 上面的例子就是直接從for內部直接退出到while的外面了。code
Q: continue後面加一個label標籤是作什麼的?像下面這樣:blog
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都是最後再匹配的。get
Q:case後面能夠跟變量嗎?
例如
case a:
case b:
這樣子it
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個小夥伴給的信息:
for-each 比 for-index 快,是否是能夠這樣考慮:
for-each 是經過內部的迭代器進行遍歷的,相似於索引; for-index 是經過 index 計算偏移量的方式遍歷。 —— 這樣一來: 對 ArrayList 這樣的連續結構來講,for-each 和 for-index 的效率應該不相上下; 而對 LinkedList 這樣的鏈式列表,for-each 的索引優點就體現出來了。
Q: 何時無法用for-each代替for-index?
A: 須要往迭代器中插入元素或者刪除元素時。(這會破壞迭代器結構)