1.7 switch支持字符串真相

从JDK1.7开始,Java的switch语句开始支持使用字符串进行条件判断。这背后其实是一种语法糖,其内部实现是通过字符串的hashCode进行比较。通过对源码的分析,我们可以理解这一特性的具体工作方式。

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

jdk1.7开始switch支持字符串作为条件判断,其实是个语法糖,实际为字符串获取hashcode后再去判断。

源码:

    public static void a(String... ss) {
        switch (ss[0]) {
            case "a":
                System.out.println(1);
            case "*" :
                System.out.println(2);
            case "zcb" : 
                System.out.println(3);
            case "中" :
                System.out.println(4);

        }
    }
class反编译;

	public static void a(String... ss) {
		label33 : {
			label32 : {
				String arg0;
				switch ((arg0 = ss[0]).hashCode()) {
					case 42 :
						if (!arg0.equals("*")) {
							return;
						}
						break;
					case 97 :
						if (!arg0.equals("a")) {
							return;
						}

						System.out.println(1);
						break;
					case 20013 :
						if (!arg0.equals("中")) {
							return;
						}
						break label33;
					case 120409 :
						if (!arg0.equals("zcb")) {
							return;
						}
						break label32;
					default :
						return;
				}

				System.out.println(2);
			}

			System.out.println(3);
		}

		System.out.println(4);
	}




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值