JAVA-初步认识-第三章-语句-switch
一. 概述
可以将if语句的判断结构看成判断题,将switch的选择结构看成选择题。判断题两个结果选择一个,选择题的选项就比较多了。两种语句里面我觉着最重要的就是所谓的“条件表达式”,对于这个条件表达式,我还不懂。if语句中条件表达式的输出结果是boolean类型的数据,按照ture还是false来进行操作,但凡是true,就执行对应的语句,否则(否则就是否定)就进入else,再判断,而且if语句只要执行过一次,就直接退出了。但是switch不同,switch条件语句中的输出是数值型(数字和字符),也不是说执行一次就退出了,要有break关键字。switch相较于if来说,关键字多,比较复杂,所以if用的多,要想if大范围的应用,肯定要想办法构造boolean类型的判断语句。
对Switch的初步认识:Switch和if的区别,除了一个是选择,一个是判断外,在运算的控制还有一个显著的区别,Switch是对众多的选项都进行了测试,不同于if有一个判断应验就退出的操作。
二. 对Switch的认识
Switch作为一个比较复杂的语句,里面涉及到的关键字比较多,有这么四个,switch,case,break,default。
→上图注解:无论是判断结构if语句,还是选择结构switch语句,都会有个前提,也就是获取的数据,然后对获取的数据进行评判。switch语句中,看变量属于哪一个选项,就进行对应选项的操作。
(补充:switch的书写形式和if格式三的形式很是相同,只是一个是数值型,另一个是boolean型。而且都是对全区域进行划分。)
注解:switch(表达式),括号里的条件表达式应该指的是运算式,不同于if语句里的boolean类型的结果,这里貌似是数值结果。下面case后面接的也是数值结果,当对上某一个case后的数值后,就操作对应的执行语句,最后退出。如果一个都对应不上,就执行最终的default。还有一点,在执行switch语句时,是将整个代码块加载进内存中,运行效率高于if,if可能是一个一个的加载的。
就执行的顺序而言,如果书写完全的话,也就是break关键字什么的都不缺少的话,那么即使default写在第一个,也是从case 取值1开始的。一旦语句中缺少了break,那么输出的语句发生变化,可能不再是执行完一个语句后就直接退出,将以碰到的最近的一个}或者break来作为退出的标志。
相比较而言,选择结构switch语句比判断结构if语句书写要随意的多。同时,这里也有一点疑问,两者能不能就一个问题,都可以执行呢?也就是boolean和数值型能否有一个转换。
Switch语句是一个选择语句,可以对这几种类型的数据进行选择:short,byte,int,char。
(这里switch中表达式使用变量来代表的)
注解:观看上面例子,可以知道,1.在选择结构中,执行语句并非简单的输出,而是可以进行运算,这是执行语句,只要是语句都可以。2. 这里出现的字符型在表达式中的书写是直接写出变量名,对于表达式的认识还不够。3. case的数目也是不确定的。实际上,switch(表达式)这个括号里的表达式,给定的是一个数值型的表达式,case的后面也是接的数值,将表达式中的数值和每个case中的数值对比,看是否有一致的,有一致的就执行,没有一致的,就执行default。
条件表达式中,四种类型的值 。
Switch语句中的备选项是无序的,完全可以调换顺序,将default放置到第一个位置也可以,但是底层在运算的时候,怎么办?放置无顺序,但是执行有顺序,从第一个case开始执行,当每个case执行完了,再去执行default,如果case取值都不满足的话。
一. Switch语句的结束的两种方式
一种结束方式是通过break来执行的,还有一种是当最后一个case紧靠着}时,可以省略break,这个其实不太懂。解释:如果最后一个case是选中的,那么在没有break的情况下,}充当break退出信号,如果最后一个case没有选中,那有没有break都没有关系,反正又不执行。我们试着练习一下,没有break的例子。
例子交代了这么几点:如果要想省略break,其实也可以,但是要特别设计源代码,还有一点就是,switch语句在执行时,如果执行过一次,但没有break退出关键字,那么接着语句就不在进行判断了,一直执行,知道有break或者}。
注解:我们通过上图的例子,来深入了解switch的第二种结束方式。第二种结束方式中,在该有break的时候,没有break关键字,靠其他东西来结束switch语句。在本例中,default在最前面,但执行的时候仍从case 4开始,因为每一个case均不对应条件语句里的值,从而里面的break都不会执行(如果有的话),然后跳转到执行default,可以执行语句,但是没有break,无法从这里退出,只能继续往下执行,下面每个case都执行了,输出每一个语句(这里操作的时候,就不怎么像switch语句了。),当碰到break或}时,就会退出switch语句。