java知识点问题精选之流程控制语句

举报
breakDawn 发表于 2021/02/19 17:24:32 2021/02/19
【摘要】 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标签是做什么的?像下...

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的引用里的属性)
原理见:流程控制语句知识点里的java原理


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: 需要往迭代器中插入元素或者删除元素时。(这会破坏迭代器结构)

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。