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

java中switch的用法和逻辑运算符[通俗易懂]一、switch的用法常见用法如下:importjava.util.Scanner;publicclassA{publicstaticvoidmain(String[]args){Scannersc=newScanner(System.in);intscore=sc.nextInt();if(score>100&&score<0){Syst

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

一、switch的用法

常见用法如下:

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中两个或多个值进行一样的操作。

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 的值都会输出。

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 语句则会跳出判断。(掉过坑)
案例如下:

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;

翻车现场:

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中switch的用法和逻辑运算符[通俗易懂]

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

java中switch的用法和逻辑运算符[通俗易懂]
参考资料java中的逻辑运算符& 、&& 、| 、||、!、^

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

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

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 成功解决pycharm 没有菜单栏「建议收藏」

    成功解决pycharm 没有菜单栏「建议收藏」成功解决pycharm没有菜单栏目录解决问题解决方法解决问题解决pycharm没有菜单栏解决方法首先,按Ctrl+Shift+A打开界面,切换到“Action”栏,输入“Experimentalfeatures”,点击回车,其次,取消linux.native.menu复选框,应用,最后,重启PyCharm即可!…

    2022年8月28日
    15
  • python机器学习库xgboost——xgboost算法

    python机器学习库xgboost——xgboost算法全栈工程师开发手册(作者:栾鹏)python数据挖掘系列教程安装xgboost目前还不能pip在线安装,所以先在网址https://www.lfd.uci.edu/~gohlke/pythonlibs/#xgboost中下载whl文件,然后参考https://blog.csdn.net/luanpeng825485697/article/details/7781…

    2022年4月29日
    41
  • 常用降压电路设计「建议收藏」

    常用降压电路设计「建议收藏」一、5V转3.3V电路设计1.AMS1117-3V3AMS1117-xxx是一颗LDO芯片,这个系列有很多型号,后面的xxx代表输出电压,如果是AMS1117-ADJ表明输出是通过电阻调节的。实物图展示:常见封装:电路图:AMS1117-3.3最大输出可达1A,但是其压差较大,一般在1.1V左右,所以功耗和发热量也会随着电流的增大而急剧增大,对于大电流负载,不推荐使用LDO电路,使用DCDC电路效果更佳。2.ME6211C33ME6211C33是一颗低功耗低压差LDO芯片,其工作

    2022年6月20日
    32
  • 课程实验 【八路抢答器】

    课程实验 【八路抢答器】基于外部中断课程实验【八路抢答器】#defineucharunsignedchar#defineuintunsignedintsbitLED_main=P3^6;sbitKey=P3^0;ucharcodetabie[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};ucharmain_go=0;//主线voidInit_E…

    2022年10月20日
    4
  • 直接加QQ好友的链接或会话的方法

    出自本博客:qq_2300688967原文链接:https://blog.csdn.net/qq_2300688967/article/details/52162230下面是两种方法,一种直接会话,一种添加好友,只需将本人的QQ改成自己的就行了(1)下面这个代码,可直接临时会话tencent://message/?Menu=yes&amp;uin=2300688967&amp;…

    2022年4月9日
    129
  • dnspod url转发_url解析

    dnspod url转发_url解析一些比较常用的域名软件有又url转发的功能,类似于花生壳,nat123,dnspod等都有转发url的功能没大会具体是怎么转发的方式是怎么样的呢?经过网上资料查找,查看了一些书籍,大概有了一些了解        首先了解一下,URL转发包括显性转发和隐性转发。显性转发:访问域名后,转跳到新的自定义URL地址,浏览器http地址是变化的。隐性转发:访问域名后,浏览器HTTP地址是不变的,但

    2022年10月19日
    5

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号