记得曾经去一家公司面试,那时啥也不懂,面试我的那个人好像呆过IBM,数据结构、编译原理这些都很NB。
问答环节
他:java switch中能支持什么类型?
我:byte short char int ,jdk1.5出来了enum,同样也支持enum
他:为什么能支持byte short char int 而long不行?
我:这个可能是设计问题
他:其实jvm执行class文件的时候,byte short char int这些都是当int类型来执行的,long不能直接转换成int,编译阶段就通不过了。
我:我那个时候不太理解他说的那个意思,只能点点头
他:好,那接着讨论switch为什么支持enum,刚才也讨论过switch其实都是int类型,也只支持int,那enum不是int类型,是个对象,那为什么支持呢!
我:那个时候我就蒙了(心里想着,你这家伙,就胡扯),但我讲不出理由,就直接说不知道
他:其实在switch中enum也是int类型
我:心想----我不知道你说的是对还是错,你怎么说都行
自从那以后,哥去研究虚拟机,java指令
好,废话不多说了,现在来看一下代码,代码比较简单!
事实证明当时他不是忽悠我,确实是这样的:)