Java switch 参数如果为null(也就是 swicth(null)),会出现什么情况?
上述代码输出结果(抛出异常–答案是B):
Exception in thread “main” java.lang.NullPointerException
at SwitchTest.main(SwitchTest.java:4)
分析过程
switch 是一个语法糖。switch语句是先计算 param 变量的排序值,然后与枚举常量的每个排序值进行对比。
源码中的switch(param) 调用了String 的hashCode方法。
switch 方法只支持int 类型的匹配,其他基本类型都会被语法糖转换为整型来做判断和匹配。
总结一下,java switch 参数不能是null,swicth(null)会
java.lang.NullPointerException异常。
Java 其它语法糖
语法糖(Syntactic Sugar),也叫糖衣语法,是英国计算机科学家彼得·约翰·兰达(Peter J. Landin)发明的一个术语。指的是,在计算机语言中添加某种语法,这种语法能使程序员更方便的使用语言开发程序,同时增强程序代码的可读性,避免出错的机会;但是这种语法对语言的功能并没有影响。
自动拆箱/装箱是在编译期,依据代码的语法,决定是否进行拆箱和装箱动作。
装箱过程:把基本类型用它们对应的包装类型进行包装,使基本类型具有对象特征。
拆箱过程:与装箱过程相反,把包装类型转换成基本类型。
Foreach要求被历遍的对象要实现Iterable接口,由此可想而知,foreach迭代也是调用底层的迭代器实现的。
枚举类型其实并不复杂,在JVM字节码文件结构中,并没有“枚举”这个类型。其实源程序的枚举类型,会在编译期被编译成一个普通了类。利用继承和反射来做到的。
声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!