写点什么

划重点丨详解 Java 流程控制语句知识点

发布于: 2021 年 04 月 12 日

​​摘要: 流程控制语句就是用来控制程序中各语句执行的顺序,下面将详细介绍 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: 需要往迭代器中插入元素或者删除元素时。(这会破坏迭代器结构)


点击关注,第一时间了解华为云新鲜技术~

发布于: 2021 年 04 月 12 日阅读数: 26
用户头像

提供全面深入的云计算技术干货 2020.07.14 加入

华为云开发者社区,提供全面深入的云计算前景分析、丰富的技术干货、程序样例,分享华为云前沿资讯动态,方便开发者快速成长与发展,欢迎提问、互动,多方位了解云计算! 传送门:https://bbs.huaweicloud.com/

评论

发布
暂无评论
划重点丨详解Java流程控制语句知识点