惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

WordPress大学
WordPress大学
GbyAI
GbyAI
P
Proofpoint News Feed
B
Blog
MyScale Blog
MyScale Blog
V
V2EX
B
Blog RSS Feed
Microsoft Security Blog
Microsoft Security Blog
量子位
Jina AI
Jina AI
博客园 - 叶小钗
Recent Announcements
Recent Announcements
有赞技术团队
有赞技术团队
罗磊的独立博客
L
LangChain Blog
I
InfoQ
云风的 BLOG
云风的 BLOG
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
人人都是产品经理
人人都是产品经理
小众软件
小众软件
V
Visual Studio Blog
月光博客
月光博客
The Cloudflare Blog
雷峰网
雷峰网

博客园 - 阿武

Moto G 通话没声音 Android 手机技巧 一个Java程序的生死旅程 精妙语录 【Windows Phone 7】【软件发布】深圳通助手 & 深圳长途汽车查询 & 深圳地铁通 [C++ Primer] Passing an array to a function by reference/pointers -- sample 【Ruby】删除旧文件 京东自动抢购机 64位的处理器支持多大的内存? 将.NET Entity Framework 的 Cache模块移植到JAVA平台 做快乐的程序员 Q 语言初学者系列:(3)Lists 初级 KDB+性能分析:内存篇 Q 语言初学者系列:(2)基本数据类型 Q 语言初学者系列:(1)开门篇 熟悉的感觉 盘点自己两年来走过的路 网站上图片"另存为" 为什么是 bmp 格式 经实验, 网线两端都接在交换机上并不会烧毁交换机
[JAVA]你见过这样的switch吗? - 阿武 - 博客园
阿武 · 2008-03-10 · via 博客园 - 阿武


下面这段代码:

public class Programe {
 
public static void main(String[] args) {  
  
int i = 2;
  
switch(i){
   
default:
    System.out.println(
"default");
   
case 1:
    System.out.println(
"1");
    
break;
   
case 2:
    System.out.println(
"2");
    
break;
   
case 3:
    System.out.println(
"3");
    
break;
  }

 }

}


你觉得它会输出什么呢? 或者你没有猜错, 它输出了2, 但是如果程序是这样写的呢?

int i = 20;
switch(i){
 
default:
  System.out.println(
"default");
 
case 1:
  System.out.println(
"1");
  
break;
 
case 2:
  System.out.println(
"2");
  
break;
 
case 3:
  System.out.println(
"3");
  
break;
}


我惊讶地发现它竟然输出了如下结果:
default
1

还是break语句的问题, 当程序在case中找不到匹配项的时候会跳转到default语句块执行, 由于default语句块里面没有break的跳出语句, 程序将继续向下执行, 直到遇到一个break, 虽然我们平时我们做项目的时候有严格的编码规范, 一般不会遇到诸如此类的问题, 但是我在面试的时候就遇到了, 而且当时心一慌就答错了, 当然甚至还怀疑这是否能编译通过.


不过在.NET中强制要求在default的末尾追回break语句, 所以这个问题在.NET平台下不会出现.