why哥被阿里一道基础面试题给干懵了,一气之下写出万字长文。 (6)
就看第一句我圈起来的话。后面的描述都是围绕着这句话在展开描述。Java 虚拟机的 tableswitch 和 lookupswitch 指令,只支持 int 类型。好,那我现在来问你:switch 语句的表达式可以是哪些类型的值?注意我说的是表达式。这个答案在《Java 语言规范》里面也写着的:你看,8 种基本类型已经支持了char、byte、short、int 这4 种,而这 4 种都是可以转....

why哥被阿里一道基础面试题给干懵了,一气之下写出万字长文。 (5)
怎么定义稀疏所以,在 switch 里面,我们怎么定义稀疏呢?文档中没有写。文档里没有写的,都在源码里面。于是我搞了个 openJDK,我倒要看看源码里面到底什么是 TMD 稀疏。经过一番探索,找到了这个方法:com.sun.tools.javac.jvm.Gen#visitSwitch这里我不做源码解读,我只是想单纯的知道源码里面到底什么 TMD 是 TMD 稀疏。断点时候时候各个参数如下:标....

why哥被阿里一道基础面试题给干懵了,一气之下写出万字长文。 (4)
假设这个时候 switch 表达式的值是 3,我直接根据偏移量 3,就可以取到 3 对应的接下来需要执行的地方 69,然后接着执行 default 语句了:所以,0,1,2 不叫稀疏,0,2,4 也不叫稀疏。它们都不 sparse ,缺一点点的情况下,我们可以补位。所以现在你理解官网上的这句话了吗:当 switch 语句里面 case 的值比较“稀疏”(sparse)的时候,用 tableswi....

why哥被阿里一道基础面试题给干懵了,一气之下写出万字长文。 (3)
结合着 class 文件看:奇怪了,同样的 switch 语言,却对应两个指令:lookupswitch 和 tableswitch。所以这两个指令肯定是关键突破点。我们去哪里找这个两个指令的信息呢?肯定是得找权威资料的:怎么样?The Java® Virtual Machine Specification,Java 虚拟机规范,你就大声的告诉我稳不稳?https://docs.oracle.c....

why哥被阿里一道基础面试题给干懵了,一气之下写出万字长文。 (2)
Otherwise,就是否则的意思。带入上下文也就是说前面的表达式是正常计算出来了一个东西了。那么就拿着计算出来的这个东西(表达式的值)和每一个 case 里面的常量来对比,会出现以下的情况:如果表达式的值和其中一个 case 语句中的常量相等了,那么我们就说 case 语句匹配上了。switch 代码块中匹配的 case 语句之后的所有语句 (如果有)就按照顺序执行。如果所有语句都正常完成,或....

why哥被阿里一道基础面试题给干懵了,一气之下写出万字长文。 (1)
荒腔走板大家好,我是 why,欢迎来到我连续周更优质原创文章的第 65 篇。老规矩,先荒腔走板聊聊技术之外的东西。上面这图是去年的成都马拉松赛道上,摄影师抓拍的我。哎,真是阳光向上的 95 后帅小伙啊。今年由于疫情原因,上半年的马拉松比赛全部停摆了。今年可能也没有机会再跑一次马拉松了。只有回味一下去年的成都马拉松了。去年成都马拉松我跑的是半程,只有 21 公里,女朋友也报名跑了一个 5 公里的欢....

本页面内关键词为智能算法引擎基于机器学习所生成,如有任何问题,可在页面下方点击"联系我们"与我们沟通。
面试更多阿里相关
Java面试那些事儿
手把手带您学习Java,开启编程之路。
+关注