if(a==1&a==2&a==3)为true?

发布时间:2024-11-12 11:16

最新推荐文章于 2022-11-24 15:52:51 发布

枫哥和java 于 2021-07-19 21:00:00 发布

点击蓝色“java大数据修炼之道”关注我哟

加个“星标”,每晚21:00,一起学技术

来源: toutiao.com/i6805578326279717390?wid=1626078816948

作者: 码农登陆

Part1前言

最近无意间看到一个有趣的帖子:

var a = ???;

if(a == 1 && a == 12){  

  console.log(a);

}

这是一个JS社区抛出来的问题。第一眼看到这个问题的时候,感觉这似乎是一个无稽之谈,一个变量怎么可能会同时满足俩个条件呢!

不过后来深入思考一下,发现这类问题有点意思...

如果你也觉得不可能的话,一起随着文章看下去。你也会觉得有点意思~

下文不仅仅涉及的是JS,还有Java等等其他语言~

Part2正文

接下来咱们来尝试解决这个问题。假设 if(a==1&&a==12)是等于 true的,那么a肯定不可能是一个“普通的变量”。它势必要有能力在执行的时候能够动态改动值。

一、JS版本

如果出于这种出发点,我们是不是能够假设:如果能够重新类似a方法的执行方法似乎就能够做到这种结果。

接下来这里贴一种答案:

看到这个答案,我猜搞Java或其他面向对象语言的同学有些“懵逼”。不过如果仔细看,仔细想其实也是可能从中看出一些解题思路的。

当然可能有JS的小伙伴想要求解答,这里碰巧写过解析,这里就贴出他的文章地址

看了JS的答案,我一直顺着这个解题思路再想:Java中有没有可能完成这个等式?只能说自己“功力太浅”始终没有找到合适的解决方式...因此自己就Google了一下,发现果然有“闲的蛋疼”的人提供了答案,甚至还提供了多种版本:

二、Java版本

这里就直接贴答案了,虽然不能说非常的贴近于题目,但也着实展示了其中的巧妙:

Class cache = Integer.class.getDeclaredClasses()[0];

Field c = cache.getDeclaredField("cache");

c.setAccessible(true);

Integer[] array = (Integer[]) c.get(cache);

array[130] = array[129]; 

array[131] = array[129]; 

Integer a = 1;

if(a == (Integer)1 && a == (Integer)2 && a == (Integer)3){ 

   System.out.println("Success");

}

另一个答案,说实话比较“牛逼”了:

这里用到了PowerMockRunner,也算是咱们解题思路的上最直接的帮手...

Part3尾声

写这篇文章其实并不是为了去深挖这些语言特性,只是单纯的觉得很有意思。

如果从这个题目本身出发,它既可以考察解题者的语言特性掌握程度;也可以考察出解题者对待问题,尝试解决问题的方法论。学习这条路上,任重而道远...

PS:如果觉得我的分享不错,欢迎大家随手点赞、在看。

▽加我微信,交个朋友

长按/扫码添加↑↑↑

1、编写 if 时尽量不要带 else2、颠覆认知 - MySQL数字类型如何选择?3、SpringBoot中的线程池,你真的会用么?4、面试官欺负人:new Object()到底占用几个字节?5、MySQL老大难事务和锁,一次性讲清楚!6、面试官问:缓存与数据库一致性如何解决?先操作数据库,还是缓存?

看完本文有收获?请转发分享给更多人

请长按二维码,关注 Java大数据修炼之道.

推荐程序员必备公众号 

Java大数据修炼之道

公众号:

gh_9119f24d3793

推荐理由:

在这里,我们分享程序员相关技术,职场生活,行业热点资讯。不定期还会分享IT趣文和趣图。这里属于我们程序员自己的生活,工作和娱乐空间。

 ▼长按下方↓↓↓二维码识别关注

关注 java大数据修炼之道

    每天学习java技术你想学的Java知识这里都有

点「在看」的人都涨薪了哦

网址:if(a==1&a==2&a==3)为true? https://www.yuejiaxmz.com/news/view/53431

相关内容

数组下标赋值问题,a[i++] =1;//先a[i] i再加加
为什么Java中“1000==1000”为false,而”100==100“为true?
JZOJ5360. 【NOIP2017提高A组模拟9.12】Shorten Diameter
a bytes
健康的生活 A Healthy Life英语作文(通用33篇)
代数求值,有4次方,求a²+1
使用蛮力法求解数字迷问题(类似ABCAB*A = DDDDDD)
两个实数集A={a
初中数学:a
露得清a醇怎么用?小白瓶+a醇=平价美白大法

随便看看