来源:https://www.toutiao.com/i6805...前言最近无意中看到一个有趣的帖子:vara=???;if(a==1&&a==12){console.log(a);}这是一个来自JS社区的问题。乍一看这道题好像是在胡说八道,一个变量怎么可能同时满足两个条件呢!但是深思熟虑后,发现这种题有点意思……如果觉得不可能,那就一起看文吧。你也会觉得有点意思~下面不仅是JS,还有Java等其他语言~接下来我们来尝试解决这个问题。假设if(a==1&&a==12)等于true,那么a一定不是“普通变量”。它必然具有在执行过程中动态改变值的能力。1、如果JS版本是基于这个出发点,我们是否可以假设,如果可以重新创建类似于方法a的执行方法,似乎可以达到这个结果。接下来在这里贴一个答案:看到这个答案,估计搞Java或者其他面向对象语言的同学都有点“底气”了。但是,如果你仔细观察,仔细思考,其实是可以从中看出一些解题思路的。当然,可能有JS的朋友想求解答。刚好在这里写了一篇分析,把他的文章地址贴在这里。看了JS的回答,我一直在思考这个解题思路:有没有可能用Java来完成这个?模式?只能说我“功力太浅”,始终没有找到合适的解决方案……于是google了一下,发现竟然有“闲蛋痛”的人给出了答案,甚至还提供了多个版本:2、Java版会直接把答案贴在这里。虽然不能说非常贴近主题,但也足见匠心:Classcache=Integer.class.getDeclaredClasses()[0];Fieldc=cache.getDeclaredField("cache");c.setAccessible(true);Integer[]array=(Integer[])c.get(cache);//array[129]是1array[130]=array[129];//将2设为1array[131]=array[129];//将3设置为1Integera=1;if(a==(Integer)1&&a==(Integer)2&&a==(Integer)3){System.out.println("Success");}还有一个答案,说实话比较“厉害”》:这里用到了PowerMockRunner,它也是我们解题思路最直接的帮手。如果从题目本身出发,不仅可以考察解题者对语言特点的掌握情况,还可以考察解题者对待问题和尝试解决问题的方法论。在学习这条路上,任重而道远……近期热点文章推荐:1.1,000+Java面试题及答案(2021最新版)2.不要在满屏的if/else中,试试攻略花样真香!!3.操!Java中xx≠null的新语法是什么?4、SpringBoot2.5发布,深色模式太炸了!5.《Java开发手册(嵩山版)》最新发布,赶快下载吧!感觉不错,别忘了点赞+转发!
