A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 王安琪 中级黑马   /  2013-8-4 11:09  /  2307 人查看  /  6 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文


  1. <div class="blockcode"><blockquote>public class  Waq{  
  2.    public static void main(String[] args) {  
  3.        for (int i =1; i < 7; i++) {  
  4.             switch (i) {  
  5.             case 1:  
  6.                System.out.println("wang");  
  7.                break;  
  8.            default:  
  9.                System.out.println("an");  
  10.             case 2:  
  11.                 System.out.println("qi");  
  12.                break;  
  13.             }  
  14.         }  
  15.     }  
  16. }  
复制代码

评分

参与人数 1技术分 +1 收起 理由
神之梦 + 1 很给力!

查看全部评分

6 个回复

正序浏览
break跳出的是switch这是常识, 想要直接跳出for循环可以在for循环前加一个标记
  1. flag: for (int i =1; i < 7; i++) {
  2.             switch (i) {
  3.                         default:  
  4.                System.out.println("an " + "i=" + i);
  5.             case 1:  
  6.                System.out.println("wang " + "i=" + i);  
  7.                break flag;
  8.                ......
复制代码
细节是default在case前, 如果default执行了, 则会一直执行下去直至遇到break或者到switch末尾才会跳出switch.
由此也可以发现JVM是先把switch中选择表达式的值(在此为i),先与各个case一一对应之后才会执行default不论default在case前还是case后.

评分

参与人数 1技术分 +1 收起 理由
神之梦 + 1

查看全部评分

回复 使用道具 举报 1 0
不错,可以多弄些细节方面的问题发到论坛上来
回复 使用道具 举报
Jiewin 发表于 2013-8-4 11:50
我就说说里面的break和default,break结束的值是switch体,并没有跳出for循环,估计你想考的也是这里吧
i=1 ...

说的没错啊   考的就是break跳出的是switch
回复 使用道具 举报
Jiewin 发表于 2013-8-4 11:50
我就说说里面的break和default,break结束的值是switch体,并没有跳出for循环,估计你想考的也是这里吧
i=1 ...

呵呵 ...   细心看下其实很简单的
回复 使用道具 举报
我就说说里面的break和default,break结束的值是switch体,并没有跳出for循环,估计你想考的也是这里吧
i=1,for条件满足,case 1执行,遇到break;结束switch;打印wang
i=2,for条件满足,case 2执行,遇到break;结束switch;打印qi
i=3,for条件满足,但switch找不到符合条件的语句,就执行default,打印an,因为没有break;继续向下执行,打印qi,遇break结束switch;
i=4、5、6都如3那样执行~~!!!!

评分

参与人数 1技术分 +1 收起 理由
神之梦 + 1 很给力!

查看全部评分

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马