8.switch 是否能作用在byte 上,是否能作用在long 上,是否能作用在String上?

本文详细介绍了Java中switch语句的使用,包括它对char、byte、short、int及其包装类的支持,以及从JDK 1.7开始对String类型的支持。同时,强调了long、double、float、boolean以及它们的包装类不适用于switch,并解释了不能使用的原因。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

public class Test {
    public static void main(String[] args) {
        byte c = 5;
        switch (c){
            case 5:
                System.out.println(1);
                break;
            default:
                System.out.println("default");
        }



        int a = 1;
        switch (a){
            case 1:
                System.out.println(1);
                break;
            default:
                System.out.println("default");
        }

        String b = "efg";
        switch (b){
            case "abc":
                System.out.println(1);
                break;
            case "efg":
                System.out.println(1);
                break;
            default:
                System.out.println("default");
        }
    }
}

switch 可作用于char byte short int
switch 可作用于 char byte short int 对应的包装类
switch 不可作用于 long double float boolean 包括他们的包装类
switch 可作用于 String (jdk1.7 后才可以作用于String上)
switch 可以是枚举类型(JDK1.5之后)
switch 只能是int 或 能转成int的 byte ,short ,char 。jdk 1.7 之后,string也可以。

在 switch (ecpr1)中,expr1 只能是一个整数表达式或者枚举常量,整数表达式可以是int 或 Integer 包装类型,由于 ,byte,short,char 都可以隐含转成 int ,所以这些类型以及它们的包装都可以作用在switch上。
显然,long 和 string 类型都不符合switch 的语法规定,并且不能被隐式转成int类型,所以它们不能作用于switch上。
另外 JDK1.7 中引入新特性,switch可以接收string类型的值,所以string自然也就可以作用在switch上。

参考文档

《【Java面试题】switch 是否能作用在byte上,是否能作用在long上,是否能作用在String上?》:https://blog.youkuaiyun.com/qq_44538738/article/details/105335493

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值