java汇编代码学习(二)正确的给switch添加break

这是java汇编代码学习的第二篇,本文介绍一个比较简单的知识点,也是比较常用的知识点,希望大家在平时编程中注意。

switch是我们比较常用的控制语句之一,我们都知道,switch 语句就是对输入值进行判断然后利用case语句返回我们所需的结果,具体如下

switch(n){
	case 1:
	//do something;
	break;
	case 2:
	//do something:
	break;
	case 3:
	//do something;
	break;
	case 4:
	//do something;
	break;
	case 5:
	//do something;
	break;
	default:
	//default
	break;
}
这是一个比较常规的也是推荐的用法,注意到我们每一个case语句都有一个break,如果没有会怎么样呢?直接上代码

public class switchTest{
	public static void main(String[] args){
		int card = 11;
		switch(card){
			case 11:
			System.out.print("Jack");
			case 12:
			System.out.print("Queen");
			break;
		}
	}
}
我们的愿意是通过点数输出 牌的名字,11点对应的是J,Jack,但是实际上会输出:


这与实际不符,很多小伙伴应该也早就预料到了这个输出,为什么会这样呢?我们从java字节码的角度来找原因



仔细看字节码(稍微会点汇编就好)从汇编代码看出,switch是通过查表控制流程的,当输入11,会跳转到32首先获取到print()方法,给它传入Jack,并执行输出,正常应该结束并返回,但从字节码可以看出代码会继续执行并输出Queen,这是由于没有加入break语句造成的,所以最后输出"JackQueen"。还有一点需要注意的是我这里并没有写default;但是字节码还是给default添加了控制,就是直接return;这说明switch语句是保证会退出的,但我们只是了解这个就好了,我们应该按照代码块一的形式写,有default,case语句要添加break语句,这会减少出错的可能,代码的可读性更好。

学习过程中,记录这些更多的是为了以后自己查看,也希望能够给小伙伴们带来一些帮助。恳请各位指出不足与错误之处,万分感谢。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值