Hello,大家好!我是你们的老朋友小米,一个每天都在技术世界里快乐遨游的“29岁技术爱好者”。最近啊,我收到一位粉丝私信,提了一个Java面试题,问题乍一看特别简单,但别小看它,背后暗藏玄机!
问题是这样的:
面试官问:“这段代码能正常编译运行吗?如果有错,是为什么?如果没错,为什么?”
哈哈,看到这题,许多人可能第一反应是:“有啥区别?不都一样加1嘛!” 其实,这里暗藏了Java中隐式类型转换和赋值运算符特性的知识点。接下来,我就通过讲故事的方式,手把手带你理解清楚这道题背后的玄机!
故事时间:数据类型的大小争执
从前有个小村子,叫Java类型村。村里住着八个小伙伴,分别是:byte、short、int、long、float、double、char、boolean。他们每天生活得很开心,但是有一天,他们吵了起来。
吵什么呢?他们在争论“谁的容量最大”。
- byte最小,只有1个字节。
- short有2个字节,觉得自己比byte强。
- int有4个字节,自认为是默认哥(默认整数类型就是int)。
- long更厉害,8个字节,觉得自己称霸村子。
- float和double不甘示弱,他们虽然是小数类型,但也爱参与这种“争夺战”……
最后,