javaswitch(java中switch语句用法详解_python逻辑运算符不懂「建议收藏」)

发布时间:2025-12-10 19:12:16 浏览次数:5

java中switch语句用法详解_python逻辑运算符不懂「建议收藏」-javaswitch()括号中能放什么类型

java中switch语句用法详解_python逻辑运算符不懂「建议收藏」一、switch的用法常见用法如下:importjava.util.Scanner;publicclassA{publicstaticvoidmain(String[]args){Scannersc=newScanner(System.in);intscore=sc.nextInt();if(score>100&&score<0){Syst_switchjava用法

一、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中的逻辑运算符& 、&& 、| 、||、!、^

需要做网站?需要网络推广?欢迎咨询客户经理 13272073477