前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >java中switch的用法和逻辑运算符[通俗易懂]

java中switch的用法和逻辑运算符[通俗易懂]

作者头像
全栈程序员站长
发布2022-09-08 11:44:41
9900
发布2022-09-08 11:44:41
举报
文章被收录于专栏:全栈程序员必看

大家好,又见面了,我是你们的朋友全栈君。

一、switch的用法

常见用法如下:

代码语言:javascript
复制
import java.util.Scanner;
public class A { 
   
    public static void main(String[] args) { 
   
        Scanner sc = new Scanner(System.in);
        int score = sc.nextInt();
        if (score > 100 && score < 0){ 
   
            System.out.println("输入错误");
            return ;
        }//作为一个程序员该有的思想
        
        switch(score / 10){ 
   
            case 10:
            case 9:
                System.out.println("优秀");
                break;
            case 8:
                System.out.println("良好");
                break;
            case 7:
                System.out.println("中等");
                break;
            case 6:
                System.out.println("及格");
                break;
            default :
                System.out.println("不及格");
                break;
        }
    }
}

注意: 1、switch后的变量支持int及以下(char,short,byte),String,Enum,必须要赋初值,也可以这样赋值switch(score = 0)

switch 不支持 long,是因为 switch 的设计初衷是对那些只有少数的几个值进行等值判断,如果值过于复杂,那么还是用 if 比较合适。


另一种说法 在switch(expr1)中,expr1只能是一个整数表达式或者枚举常量(更大字体),整数表达式可以是int基本类型或Integer包装类型,由于,byte,short,char都可以隐含转换为int,所以,这些类型以及这些类型的包装类型也是可以的。显然,long、float、double类型不符合switch的语法规定,并且不能被隐式转换成int类型,所以,它们不能作用于swtich语句中。 注意:String类型是Java7开始支持的。


2、case之后的值必须和switch变量的类型一致

3、default的用法:在没有匹配到的情况或匹配到的代码块没有break,就会执行default代码; 通俗的讲,default是在没有 case 语句的值和变量值相等的时候执行;

4.switch后的变量还可以做运算。

break的常见应用情况:(在需要的时候别忘了加break)

1、case中两个或多个值进行一样的操作。

代码语言:javascript
复制
import java.util.Scanner;
public class B { 
   
    public static void main(String[] args) { 
   
        Scanner sc = new Scanner(System.in);
        int month = sc.nextInt();
        if (month < 1 && month > 12){ 
   
            System.out.println("输入错误");
        }
        switch (month){ 
   
            case 1:
            case 3:
            case 5:
            case 7:
            case 8:
            case 10:
            case 12:
                System.out.println(31);
                break;
            case 4:
            case 6:
            case 9:
            case 11:
                System.out.println(30);
                break;
            case 2:
                System.out.println(29);
                break;
            default:
                System.out.println("输入错误");
        }
    }
}

2、case语句没有break时,匹配成功后,从当前 case 开始,后续所有 case 的值都会输出。

代码语言:javascript
复制
public int getValue(int i) { 
   
         int result = 0;
         switch (i) { 
   
            case 1:
                result = result + i;
            case 2:
                result = result + i * 2;
            case 3:
                result = result + i * 3;
        }
        return result;
 }

3、如果当前匹配成功的 case 语句块没有 break 语句,则从当前 case 开始,后续所有 case 的值都会输出,如果后续的 case 语句块有 break 语句则会跳出判断。(掉过坑) 案例如下:

代码语言:javascript
复制
public int getValue(int i) { 
   
         int result = 0;
         switch (i) { 
   
            case 1:
                result = result + i;
            case 2:
                result = result + i * 2;
                break;
            case 3:
                result = result + i * 3;
        }
        return result;

翻车现场:

代码语言:javascript
复制
public class Demo { 
   
    public static void main(String args[]) { 
   
        char c = 'A' ;
        int num = 10 ;
        switch(c) { 
   
            case 'B' :
                num ++ ;
            case 'A' :
                num ++ ;
            case 'Y' :
                num ++ ;
                break ;
            default :
                num -- ;
        }
        System.out.println(num) ;
    }
}

当时把这条情况给忘了,想着匹配’A’之后,向下执行default语句,结果为10;但是现实是残酷的😭,匹配到A之后,执行下面的case语句,结果为12

二、Java中逻辑运算符

&和&&:当且仅当 a、b 都为 true 时,结果为 true ;

| 和 || : 当且仅当 a、b 都为 false 时,结果为 false ;

^ : a 与 b 相异时,结果为 true ;

注意:逻辑运算符操作的都是boolean类型的变量,而且结果也是boolean类型。

&、| 与 &&、|| 的区别:& 和 | 左右两边的式子一定会执行,&& 和 || 只要左边的式子能得出结果,右边的式子就不会执行。(视情况而定)

参考资料java中的逻辑运算符& 、&& 、| 、||、!、^

发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/156412.html原文链接:https://javaforall.cn

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 一、switch的用法
  • 二、Java中逻辑运算符
    • &和&&:当且仅当 a、b 都为 true 时,结果为 true ;
      • | 和 || : 当且仅当 a、b 都为 false 时,结果为 false ;
        • ^ : a 与 b 相异时,结果为 true ;
        领券
        问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档