今天看见一篇博客《让人疑惑的Java代码,竟成大多公司面试题热门》
作者这种追根究底的精神我非常欣赏,也是值得我们学习的。如果大公司用这个来作为面试题,我认为这个大公司出面试题的人就是有病,而且属于那种半灌水响叮当的那种人。
众所周知,虚拟机、jdk有不同的版本,也有不同的厂商,具体可以看我随意搜索的一篇博客(jdk不同厂商:http://shuwen.iteye.com/blog/1149992,虚拟机不同厂商自己搜索)
在这个版本 i3==i4为true,在另一个版本,说不定就为false。因为实现Interger的方式不一定都使用了作者说的(在-127-128间)缓存的方式。
正确的做法就是基本数据类型就用==,对象就用equals,这是设计的基本规范,不容挑战。
当然,如果是大公司给出运行环境(或调试环境),让开发者在一定时间内找出原因(为什么i3==i4为true),并像作者这样分析、剖析,那这个面试是很有逼格的,点赞1024;