java中switch的使用及思维梳理

java中有两个经常用于条件判断的方法,一个是if{}else{},另一个就是switch()了。总的来说因为switch可以直接一对一满足条件,不满足条件的情况是不会执行的的所以switch的效率会相对if{}else{}更高一些,而且这两个方法是可以无门槛互换的。

switch的使用:

  • 能用于switch判断的类型有:byte、short、int、char(JDK1.6),还有枚举类型,但是在JDK1.7后添加了对String类型的判断
  • case语句中少写了break,编译不会报错,但是会一直执行之后所有case条件下的语句而不再判断,直到default语句
  • 若果没有符合条件的case就执行default下的代码块,default并不是必须的,也可以不写
    switch(mark) {
            case 0:
                System.out.println(mark);
    break;
            case 10:
                System.out.println(mark);
          break;
            case 20:
                System.out.println(mark);
                break;
            }

这里mark值是判断条件,case 对应的是具体的值,如果mark=0或者mark=10或者mark=20,相对应的条件成立就会执行case中的程序

在这里有一个思维误区很容易出错,看下面代码:

switch(mark) {
            case 0:
                System.out.println(mark);
                mark = 10;
                break;
            case 10:
                System.out.println(mark);
                mark = 20;
                break;
            case 20:
                System.out.println(mark);
                mark = 30;
                break;
            }

这段代码比和上面的代码相比,在每个case中会重新给mark赋值,让这个重新赋的值和下一步的case相对应。

错误思维:如果mark的初始值是0,这个switch程序会执行三次,执行的顺序依次是0,10,20。

因为我们在每一步的case中都重新给mark赋值了,所以不熟悉的很容易就会觉得这个switch会从上往下执行,凡是满足条件的步骤都会执行。其实这个switch是只会执行一次的,因为每个case后面都跟了一个break,这个break的作用就是跳出当前循环也就是跳出当前的switch,所以这个switch只会执行mark初始值对应的那个case,后面的步骤不会继续执行。如果要想三个步骤都依次执行需要在switch外面加上一个while循环,在一定的条件内重复执行switch:如下加上while

while(mark<=30) {
            switch(mark) {
            case 0:
                System.out.println(mark);
                mark = 10;
                break;
            case 10:
                System.out.println(mark);
                mark = 20;
                break;
            case 20:
                System.out.println(mark);
                mark = 30;
                break;
            }
        }

总结:每次进入switch,如果每个case后面都用break跳出当前循环了,则不管mark的值怎么变,只会执行一个case

原文地址:https://www.cnblogs.com/lyd447113735/p/8855195.html

时间: 2024-09-27 21:40:48

java中switch的使用及思维梳理的相关文章

java中switch语句中的defaul条件的位置

在java中switch语句中,每个case分支就是一个入口,如果都没有满足条件,那么将会走到default分支中.那么这个default分支的位置会不会影响到执行的流程呢? package com.app.statement; import java.util.Scanner; /**  * Created by charles on 2015/7/12.  */ public class SwitchTest {     public static void main(String[] ar

java中switch case和break使用

switch只能比较数值或字符或者类对象 首先看看switch的括号,当中放置您要取出数值的变量.取出数值之后,程序会开始与case中所设定的数字或字符做比较, 如果符合就执行其中的语句,直到遇到break后离开switch程序块:如果没有符合的数值或字符,则会执行default后的语句, default不一定需要:如果没有默认要处理的动作,可以省去这个部分 实例如下: @Test public void switchCase(){ this.net(2); } private void net

Java基础知识强化19:Java中switch分支语句

java中switch语句: 这里expression控制表达式的数据类型只能是byte.short.char.int四种整型类型和枚举类型,不能是boolean类型: Java7(1.7)改进了switch分支语句: Java7允许switch语句中的控制表达式为java.lang.String类型(不能是StringBuffer 或者 StringBuilder) switch(expression) {     case  condition1:          {          

java中switch的用法

switch关键字对于多数java学习者来说并不陌生,由于笔试和面试经常会问到它的用法,这里做了一个简单的总结: 能用于switch判断的类型有:byte.short.int.char(JDK1.6),还有枚举类型,但是在JDK1.7后添加了对String类型的判断 case语句中少写了break,编译不会报错,但是会一直执行之后所有case条件下的语句而不再判断,直到default语句 若果没有符合条件的case就执行default下的代码块,default并不是必须的,也可以不写 1 pac

java中switch用法,输出第几天

import java.util.Scanner; public class month{ public static void main(String [] args){ Scanner scanner=new Scanner(System.in); /* 输入month=? day=? 输出第几天 */ System.out.print("month:"); int month = scanner.nextInt(); System.out.print("day:&quo

在java中switch存放String参数

在jdk 7 之前,switch 只能支持 byte.short.char.int 这几个基本数据类型和其对应的封装类型.switch后面的括号里面只能放int类型的值,但由于byte,short,char类型,它们会 自动 转换为int类型(精精度小的向大的转化),所以它们也支持. 注意,对于精度比int大的类型,比如long.float,doulble,不会自动转换为int,如果想使用,就必须强转为int,如(int)float; 原文地址:https://www.cnblogs.com/h

java中的switch用String作为条件

在开发java程序的过程中,我们遇到了条件判断首选就是switch,但是java中的switch功能不支持字符串作为条件.这时我们该怎么办呢? --使用枚举. 一.枚举简单了解 1.enum是一种数据类型. 特殊:是指在枚举中将变量的值一一列出来,变量的值只限于列举出来的值的范围内. 特殊到一般化:enmu 就是我们根据自己业务需要定义的同"String,int"相同的数据类型.同时enum也就是一种类,可以在enum中定义方法,在使用的时候就按照调用类的方式来调用. 2.定义成枚举的

java中的Switch case语句

java中的Switch case 语句 在Switch语句中有4个关键字:switch,case break,default. 在switch(变量),变量只能是整型或者字符型,程序先读出这个变量的值,然后在各个"case"里查找哪个值和这个变量相等,如果相等,则条件成立,程序执行相应的分支,直到碰上break或有switch语句结束. 有几个需要着重注意的地方. 第一,前面说了switch(变量),只能是整型和字符类型. 第二,case之后是直接的常量数值. 第三,break使得程

Java中的switch语句后面的控制表达式的数据类型

Java中的switch语句后面的控制表达式的数据类型 1.byte 2.char 3.short 4.int 5.枚举类型 6.Java 7允许java.lang.String类型