前天做到一个题,是测试java switch语句的.结果很出我意料.
public class Test {
public static void main(String[] args) {
char c = 'c';
switch (c) {
default:
case 'a':
System.out.println('a');
break;
case 'b':
System.out.println('b');
break;
}
}
}
输出'a',这代码带着点邪气.
再看一段,如果有case 'c'呢?
switch (c) {
default:
case 'a':
System.out.println('a');
break;
case 'b':
System.out.println('b');
break;
case 'c':
System.out.println('c');
break;
}
输出'c'.
所有switch有两个原则:1,default语句不管放在那里都是最后才执行. 2,case/default之间是"or"的执行关系,形象点描述的话就像是一只找桃子的贪心猴子从树的分枝上一根根往下跳,不被人打一棍就舍不得放弃下一个可能的桃子,即便它已经捡到了.
个人感觉switch的这种case语法本身就不属于良好设计,违反了"least surprise
",这也是为什么所有教程都淳淳告诫:记得要加break啊!这语法太违反人类直觉了.
统计一下所有用到switch的代码,大概会发现case后会带着break的占绝大多数,所以更好的设计是以break作为默认行为,用"continue"告诉case需要向下连续,而不是把continue作为默认行为.
有时间的话倒是可以研究一下switch语法最早是哪门语言设计出的,一路怎么演化,一定很有意思.呵呵.
在java中为了性能考虑,switch只能对有限的类型进行判断(int,char,byte,enum和包装类)也极大限制了它的使用,大概在一些算法类的程序中才有用武之地了.
@see http://java.sun.com/docs/books/tutorial/java/nutsandbolts/switch.html
分享到:
相关推荐
C语言switch语句学习教案.pptx
switch语句 switch 语句 与 if-then 和 if-then-else 语句不同,switch 语句可以具有许多可能的执行路径。switch 可与 byte,short,char 和 int 原始数据一起使用类型。它也适用于 enumerated types (枚举类型)(在...
c语言程序设计简单的switch语句的用法
本文主要给大家介绍了...因此,Go语言的switch语句又分为表达式switch语句和类型switch语句。 1、表达式switch语句 var name string ... switch name { case Golang: fmt.Println(Golang) case Rust: fmt.Println
C语言switch语句 ——教学案例分析PPT学习教案.pptx
c语言程序设计教程(第二版)谭浩强,经典例题,对于学习c语言有很大帮助
1、.了解C语言的逻辑运算2、.学会使用if语句和switch语句3、.熟练掌握选择结构程序设计方法
switch语句的使用例子
38.java中的switch语句.zip38.java中的switch语句.zip38.java中的switch语句.zip38.java中的switch语句.zip38.java中的switch语句.zip38.java中的switch语句.zip38.java中的switch语句.zip38.java中的switch语句.zip...
switch语句的普通用法很简单,如下: var a = 3; switch (a) { case 1: console.log(a); break; case 2: case 3: console.log(a); break; default: break; } 这里a和case列表中从上而下逐一做比较,如果...
C语言switch语句 ——教学案例分析PPT课件.pptx
switch 语句 语法 使用规则 介绍的很详细
C语言switch语句PPT课件.pptx
C++语言:switch语句最详细讲解。从switch语句的执行过程,switch语句的注意要点,例题讲解,作业等 。适合于中小学生,信息学爱好者。
switch 语句的写法 简单的一个代码,简述java语言switch、语句的编写
js switch 语句练习 最简洁 注释说明必看 谢谢!JS常交流,祝你们早日学好网站编程!
javascript,switch语句,判断年龄段
switch语句大全switch语句大全
该案例是我在java教材上抄的,用于演示switch语句的用法,其介绍了switch语句的基本用法,常用于选择有限的某个项目的编写,将各个情况列出像case 1, case 2等等,每个case后再加一个break;用于退出该switch语句。...
switch**C/C++程序员面试宝典-Switch语句:零基础面试者的必备指南** **内容概要:** 本文为零基础的面试者提供了C/C++中switch语句的全面指南,旨在帮助他们掌握面试中可能遇到的switch语句相关问题。内容涵盖了...