您好,登錄后才能下訂單哦!
本篇內容介紹了“如何使用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: 需要往迭代器中插入元素或者刪除元素時。(這會破壞迭代器結構)
“如何使用Java流程控制語句”的內容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業相關的知識可以關注億速云網站,小編將為大家輸出更多高質量的實用文章!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。