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)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • idea 2021激活码 3月最新注册码

    idea 2021激活码 3月最新注册码,https://javaforall.net/100143.html。详细ieda激活码不妨到全栈程序员必看教程网一起来了解一下吧!

    2022年3月15日
    40
  • 很黄很暴力的图片搜索引擎

    很黄很暴力的图片搜索引擎http://www.airtightinteractive.com/projects/simple_image_search/app/

    2022年10月9日
    3
  • Django(50)drf异常模块源码分析

    Django(50)drf异常模块源码分析异常模块源码入口APIView类中dispatch方法中的:response=self.handle_exception(exc)源码分析我们点击handle_exception跳转,查看该

    2022年7月31日
    6
  • Git克隆远端代码到本地「建议收藏」

    1、在桌面上点击鼠标右键,找到clone选项,出现其中URL是你要访问的地址,directory为文件保存的路径。点击OK2、桌面上会生成一个文件夹3、在此文件夹中,点击鼠标右键,找到GitBashHere,进入到如下页面输入命令第一:gitconfig–globaluser.name“zjut_wzc”第二:gitconfig–globaluser.em…

    2022年4月7日
    162
  • Hexo-Matery主题细致美化

    Hexo-Matery主题细致美化Hexo-Matery主题美化在一番瞎改js代码后,终于无法忍受next主题,于是愤然投入Matery大家庭,结果证明,香!下面是我记录的配置Matery主题的流程,仅供后来的师傅们参考。大家可以来我Hexo博客主页看看具体效果我的小站下载安装Matery主题首先在hexo官网主题里面搜索Matery主题点击进入作者大大的github,然后下载master分支的最新稳定版的代码,解压缩后将hexo-theme-matery的文件夹重命名为matery,复制到Hexo的theme

    2022年5月19日
    58
  • 轨迹规划——Bezier曲线与B样条曲线

    轨迹规划——Bezier曲线与B样条曲线一、Bezier曲线1、Bezier曲线的背景给定n+1个数据点,p0~pn,生成一条曲线,使得该曲线与这些点描述的形状相符。(如果要求曲线通过所有数据点,则属于插值问题;如果只要求曲线逼近这些数据点,则属于逼近问题。)2、Bezier曲线的定义p(t)=∑i=0naifi,n(t)p(t)=\sum_{i=0}^na_if_{i,n}(t)p(t)=i=0∑n​ai​fi,n…

    2022年6月20日
    40

发表回复

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

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