zoukankan      html  css  js  c++  java
  • 划重点丨详解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 。

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

  • 相关阅读:
    java基础2(Map)
    java基础1
    数据类型
    入门&常量&变量
    spark 机器学习 朴素贝叶斯 原理(一)
    spark 机器学习 knn 代码实现(二)
    spark 机器学习 knn原理(一)
    spark 机器学习 ALS原理(一)
    数学符号表及读法
    spark 机器学习基础 数据类型
  • 原文地址:https://www.cnblogs.com/huaweiyun/p/14646838.html
Copyright © 2011-2022 走看看