摘要:流程控制语句就是用来控制程序中各语句执行的顺序,下面将详细介绍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 。

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

划重点丨详解Java流程控制语句知识点的更多相关文章

  1. 第三节:带你详解Java的操作符,控制流程以及数组

    前言 大家好,给大家带来带你详解Java的操作符,控制流程以及数组的概述,希望你们喜欢 操作符 算数操作符 一般的 +,-,*,/,还有两个自增 自减 ,以及一个取模 % 操作符. 这里的操作算法,一 ...

  2. 详解Java GC的工作原理+Minor GC、FullGC

    详解Java GC的工作原理+Minor GC.FullGC 引用地址:http://www.blogjava.net/ldwblog/archive/2013/07/24/401919.html J ...

  3. 超全详解Java开发环境搭建

    摘自:https://www.cnblogs.com/wangjiming/p/11278577.html 超全详解Java开发环境搭建   在项目产品开发中,开发环境搭建是软件开发的首要阶段,也是必 ...

  4. 「跬步千里」详解 Java 内存模型与原子性、可见性、有序性

    文题 "跬步千里" 主要是为了凸显这篇文章的基础性与重要性(狗头),并发编程这块的知识也确实主要围绕着 JMM 和三大性质来展开. 全文脉络如下: 1)为什么要学习并发编程? 2) ...

  5. Protocol Buffer技术详解(Java实例)

    Protocol Buffer技术详解(Java实例) 该篇Blog和上一篇(C++实例)基本相同,只是面向于我们团队中的Java工程师,毕竟我们项目的前端部分是基于Android开发的,而且我们研发 ...

  6. 详解Java中的clone方法

    详解Java中的clone方法 参考:http://blog.csdn.net/zhangjg_blog/article/details/18369201/ 所谓的复制对象,首先要分配一个和源对象同样 ...

  7. java基础(十五)----- Java 最全异常详解 ——Java高级开发必须懂的

    本文将详解java中的异常和异常处理机制 异常简介 什么是异常? 程序运行时,发生的不被期望的事件,它阻止了程序按照程序员的预期正常执行,这就是异常. Java异常的分类和类结构图 1.Java中的所 ...

  8. 异常处理器详解 Java多线程异常处理机制 多线程中篇(四)

    在Thread中有异常处理器相关的方法 在ThreadGroup中也有相关的异常处理方法 示例 未检查异常 对于未检查异常,将会直接宕掉,主线程则继续运行,程序会继续运行 在主线程中能不能捕获呢? 我 ...

  9. 第十八节:详解Java抽象类和接口的区别

    前言 对于面向对象编程来说,抽象是它的特征之一. 在Java中,实现抽象的机制分两种,一为抽象类,二为接口. 抽象类为abstract class,接口为Interface. 今天来学习一下Java中 ...

  10. 详解java动态代理机制以及使用场景

    详解java动态代理机制以及使用场景 https://blog.csdn.net/u011784767/article/details/78281384 深入理解java动态代理的实现机制 https ...

随机推荐

  1. C++小练习:字符串分割的高性能实现

    字符串分割是日常工作中比较常见的基础函数,通常大家会使用现成的基础库,基础库的性能是否是最佳的?本文基于一个周末小练习,研究如何最大限度的提升字符串分割的性能. 1.背景 字符串按照分隔符拆成多个子串 ...

  2. Isito 入门(九):安全认证

    本教程已加入 Istio 系列:https://istio.whuanle.cn 目录 7,认证 Peer Authentication PeerAuthentication 的定义 实验 Reque ...

  3. 22. 从零用Rust编写正反向代理,一个数据包的神奇HTTP历险记!

    wmproxy wmproxy已用Rust实现http/https代理, socks5代理, 反向代理, 静态文件服务器,四层TCP/UDP转发,内网穿透,后续将实现websocket代理等,会将实现 ...

  4. easyre-153

    这里也是没有做出来,因为有隐藏函数的原因(第一次见) 攻防世界XCTF 3rd-RCTF-2017 easyre153学习笔记_rhelheg-CSDN博客 攻防世界逆向高手题之easyre-153- ...

  5. 🔥🔥Java开发者的Python快速进修指南:面向对象进阶

    在上一期中,我们对Python中的对象声明进行了初步介绍.这一期,我们将深入探讨对象继承.组合以及多态这三个核心概念.不过,这里不打算赘述太多理论,因为我们都知道,Python与Java在这些方面的主 ...

  6. 时间复杂度为 O(nlogn) 的排序算法

    归并排序 归并排序遵循分治的思想:将原问题分解为几个规模较小但类似于原问题的子问题,递归地求解这些子问题,然后合并这些子问题的解来建立原问题的解,归并排序的步骤如下: 划分:分解待排序的 n 个元素的 ...

  7. Ubuntu下安装多个JDK,并设置其中一个为默认JDK

    由于使用需要,要在机器上同时安装OpenJDK 8和11,并将8设置为默认JDK 首先安装OpenJDK sudo apt-get install openjdk-8-jdk sudo apt-get ...

  8. 2023-12-02:用go语言,如何求模立方根? x^3=a mod p, p是大于等于3的大质数, a是1到p-1范围的整数常数, x也是1到p-1范围的整数,求x。 p过大,x不能从1到p-1遍

    2023-12-02:用go语言,如何求模立方根? x^3=a mod p, p是大于等于3的大质数, a是1到p-1范围的整数常数, x也是1到p-1范围的整数,求x. p过大,x不能从1到p-1遍 ...

  9. jmeter-json断言

    1.JSON 断言所在位置:断言->JSON 断言 2.JSON断言中的字段解析 Assert JSON Path exists:json 表达式,判断所字段是否存在,存在则为True, 否则为 ...

  10. c# 高并发必备技巧(三)

    前面两篇文章主要是介绍了如何解决高并发情况下资源争夺的问题.但是现实的应用场景中除了要解决资源争夺问题,高并发的情况还需要解决更多问题,比如快速处理业务数据等, 本篇文章简要罗列一下与之相关的更多技术 ...