划重点丨详解Java流程控制语句知识点
摘要:流程控制语句就是用来控制程序中各语句执行的顺序,下面将详细介绍java流程控制语句。
流程控制语句就是用来控制程序中各语句执行的顺序,下面将详细介绍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知识点问题精选之流程控制语句》,原文作者:breakDraw 。
相关文章
- k8sailor - 02 使用 cobra 管理命令与参数集群连接参数
- k8sailor 04-使用 gin 初始化一个 API Server
- k8sailor - 05 设计 RESTful API 和 HTTP 响应数据
- k8sailor - 06 使用 api/biz/dao 分层结构管理数据请求,获取 deployment 数据
- k8sailor - 07 初始化 vue3+vite
- gin 内部重定向时 middleware 不可用异常
- k8sailor - 08 使用 vue 获取后台 API 数据并展示
- k8sailor - 09 通过 deployment label 获取 pod 信息
- k8sailor - 10 使用 vue-router 进行路由管理
- k8sailor - 12 deployment 设置副本数量 与 参数的有效性验证
- k8sailor - 13 使用 informer 监听 k8s 变化并在本地缓存数据
- k8sailor - 16 创建 deployment
- k8sailor - 17 Pod 的运行状态 阶段(phase)与状态(status) 探究
- k8sailor - 19 创建 Service 与三种模型的抽象
- k8sailor - 20 创建 ingress 二三事
- istio-in-action - 02 初始化第一个项目
- istio-in-action - 01 安装 docker-k3s-istio 开发环境
- istio-in-action - 03 最简单的isti VirtualService 和 k8s Ingress
- istio-in-action - 04 使用 istio Gateway 允许外部访问
- istio-in-action - 05 VirtualService 使用路径匹配重写路由