浅谈Java中switch分支语句
前言:
在程序中遇到多分支选择的时候,想必大家都喜欢用if...else if...else...语句,尤其是初学者,因为在了解switch语句之前,我也是只会用if...else语句。那么现在看完这篇随笔的介绍后,你们又有了另外一种选择,使用switch语句可以增强代码的可能性,当然switch也不是随随便便就能用的,它也有语法规则的约束,请看下面的阐述。

一、switch简介和语法
switch语句用于多分支选择,由一个控制表达式和多个case标签组成。switch语句后面的控制表达式的数据类型只能是byte、short、char、int、String和枚举类型,不能是其它类型。
switch语句往往需要在case标签后紧跟一个代码块,case标签作为这个代码块的标识。
switch语句的语法如下:
switch(expr){
case condition1{
//代码块...
break;
}
case condition2{
//代码块...
break;
}
...
case conditionN{
//代码块...
break;
}
dafault:{
//代码块...
}
}
这种分支语句的执行是先对expr求值,然后依次匹配每个case标签后的condition值,遇到匹配的值即执行对应的代码块,如果condition的值没有与expr表达式的值相等,则执行default标签后的代码块。
二、switch语句和if语句的区别
switch语句和if语句都可用于分支条件的选择,但switch后面的控制表达式只能是byte、short、char、int、String和枚举类型,不能是boolean类型,if后面的控制表达式是boolean类型;switch语句中各个case标签后代码块的开始点和结束点非常清晰,因此完全可以省略case后代码块的花括号。
三、switch的使用及注意事项
为了更清晰的认识switch,下面通过一段程序来示范switch的用法:
public class TestSwitch {
public static void main(String[] args) {
//声明变量languageType
String languageType = "Java";
//执行switch语句
switch (languageType) {
case "C":
System.out.println("C语言");
break;
case "Java":
System.out.println("Java语言");
break;
case "C++":
System.out.println("C++语言");
break;
case "Python":
System.out.println("Python语言");
break;
default:
System.out.println("语言类型输入错误");
}
}
}
运行上面的程序输出:Java语言。
因为定义的变量(switch后面的控制表达式)"languageType" 与"Java"匹配。
如果把上面程序中的每个case标签里的break语句去掉,将会发生什么样的结果呢?那么我先把每个break语句注释掉,运行结果如下:
Java语言 C++语言 Python语言 语言类型输入错误
输出结果是不是很奇怪!这正是switch语句的运行流程决定的,只要进入switch语句的入口,程序会一直运行下去,直到遇到break语句,如果省略了break语句,那么匹配case值后的所有情况(包括default)都会被执行。
所以,使用switch语句时,有两个值得注意的地方:
1)switch后面的控制表达式只能是byte、short、char、int、String和枚举类型;
2)如果省略了case后的代码块break,将会引入一个陷阱。
我是小架,我们下篇文章见!
浅谈Java中switch分支语句的更多相关文章
- Java基础知识强化19:Java中switch分支语句
java中switch语句: 这里expression控制表达式的数据类型只能是byte.short.char.int四种整型类型和枚举类型,不能是boolean类型: Java7(1.7)改进了sw ...
- 浅谈Java中的对象和引用
浅谈Java中的对象和对象引用 在Java中,有一组名词经常一起出现,它们就是“对象和对象引用”,很多朋友在初学Java的时候可能经常会混淆这2个概念,觉得它们是一回事,事实上则不然.今天我们就来一起 ...
- 浅谈Java中的深拷贝和浅拷贝(转载)
浅谈Java中的深拷贝和浅拷贝(转载) 原文链接: http://blog.csdn.net/tounaobun/article/details/8491392 假如说你想复制一个简单变量.很简单: ...
- 浅谈Java中的深拷贝和浅拷贝
转载: 浅谈Java中的深拷贝和浅拷贝 假如说你想复制一个简单变量.很简单: int apples = 5; int pears = apples; 不仅仅是int类型,其它七种原始数据类型(bool ...
- 浅谈Java中的栈和堆
人们常说堆栈堆栈,堆和栈是内存中两处不一样的地方,什么样的数据存在栈,又是什么样的数据存在堆中? 这里浅谈Java中的栈和堆 首先,将结论写在前面,后面再用例子加以验证. Java的栈中存储以下类型数 ...
- 浅谈Java中的对象和对象引用
浅谈Java中的对象和对象引用 在Java中,有一组名词经常一起出现,它们就是“对象和对象引用”,很多朋友在初学Java的时候可能经常会混淆这2个概念,觉得它们是一回事,事实上则不然.今天我们就来一起 ...
- 浅谈Java中的equals和==(转)
浅谈Java中的equals和== 在初学Java时,可能会经常碰到下面的代码: 1 String str1 = new String("hello"); 2 String str ...
- 浅谈Java中的equals和==
浅谈Java中的equals和== 在初学Java时,可能会经常碰到下面的代码: String str1 = new String("hello"); String str2 = ...
- 【转】浅谈Java中的hashcode方法(这个demo可以多看看)
浅谈Java中的hashcode方法 哈希表这个数据结构想必大多数人都不陌生,而且在很多地方都会利用到hash表来提高查找效率.在Java的Object类中有一个方法: public native i ...
随机推荐
- Java题库——Chapter12 异常处理和文本IO
异常处理 1)What is displayed on the console when running the following program? class Test { public stat ...
- js|jq获取兄弟节点,父节点,子节点
08.19自我总结 js|jq获取兄弟节点,父节点,子节点 一.js var parent = test.parentNode; // 父节点 var chils = test.childNodes; ...
- Java从入门到精通系统书籍,吐血整理的,只要1元
思诚为修身之本,而明善又为思诚之本 我会在支付宝联系你 付完款后在支付宝账单详情页 点击联系收款方.我会回复您下载链接.
- Dynamics 365 Online-Delete Audit History Data
Dynamics 365 CE自带的Audit功能,虽然不会给我们的业务流程带来显著变化,但是这个功能对于我们追溯数据变化的历史,诊断定制触发的执行,以及数据还原等,都是不可或缺的关键先生.尤其是涉及 ...
- 大话Git系列之初识版本控制系统(1)
前言:何谓版本控制系统呐?有两种说法:一种叫法为SCM,==source code management (源代码管理系统)另一种说法为VCS,==version control system(版本控 ...
- SAP 固定资产添加新类别
需求:添加资产新类别(LEASE) 步骤: 1.添加 Account determination ①SPRO->Financial Accounting(New)->Asset Accou ...
- swift字符串截取实例
截取字符串 let deviceStr = deviceInfoLabel.attributedText?.string var device = "" if let len : ...
- GO 全面解析 json tag 篇
在处理json格式字符串的时候,经常会看到声明struct结构的时候,属性的右侧还有反引号括起来的内容.形如: type User struct { UserId int `json:"us ...
- 单选框radio改变事件
<input type="radio" name="bedStatus" id="allot" checked="check ...
- 解决brew update很慢
一般遇到这种问题,就跟墙有关啦,需要更换源. 用清华的源就非常好,去清华镜像的官网看一下说明,https://mirrors.tuna.tsinghua.edu.cn/help/homebrew/ $ ...