0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

if(a==1 && a==2 && a==3),为true,你敢信?

Android编程精选 来源:Android编程精选 2023-05-08 11:01 次阅读

	
				

# 前言

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

var a = ???;
if(a == 1 && a == 12){  
  console.log(a);
}

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

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

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

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

# 正文

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

# JS版本

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

接下来这里贴一种答案:

1cddf474-ed4c-11ed-90ce-dac502259ad0.png

看到这个答案,我猜搞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[129] is 1
array[130] = array[129]; 
// Set 2 to be 1
array[131] = array[129]; 
// Set 3 to be 1
Integer a = 1;
if(a == (Integer)1 && a == (Integer)2 && a == (Integer)3){ 
   System.out.println("Success");
}

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

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

1cf8437e-ed4c-11ed-90ce-dac502259ad0.png

# 尾声

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

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


	

-End-

最近有一些小伙伴,让我帮忙找一些面试题资料,于是我翻遍了收藏的 5T 资料后,汇总整理出来,可以说是程序员面试必备!所有资料都整理到网盘了,欢迎下载

审核编辑 :李倩



声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • JAVA
    +关注

    关注

    19

    文章

    2904

    浏览量

    102994
  • JS
    JS
    +关注

    关注

    0

    文章

    73

    浏览量

    17848

原文标题:if(a==1 && a==2 && a==3),为true,你敢信???

文章出处:【微信号:AndroidPush,微信公众号:Android编程精选】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    synopsys&Mentor设计流程

    synopsys & Mentor 设计流程免费下载。
    发表于 07-08 11:37 72次下载

    R&S ZNLE矢量网络分析仪的主要特点及应用优势

    R&S®ZNLE 矢量网络分析仪契合“Measurements as easy as ABC”的标语: 易于配置、易于校准、易于测量。 闻名遐迩的优质设计、创新的用户界面以及紧凑尺寸使 R&
    发表于 12-09 09:29 1177次阅读

    R&S FSC3台式频谱分析仪的主要特点及应用范围

    罗德与施瓦茨的R&S®FSC是一款高性价比,小体积的台式频谱分析仪,它具备罗德与施瓦茨一贯的高品质,可以满足所有重要的频谱分析任务。R&S®FSC应用范
    发表于 12-09 09:41 918次阅读

    R&S FSL6台式信号分析仪的功能特点及应用范围

    R&S®FSL 是一款多功能而且经济实用的信号分析仪。R&S®FSL全系列标配28MHz的信号解调带宽,远高于其他同类产品。无论是频谱、噪声系数、ACL
    发表于 12-09 09:46 1124次阅读

    欧拉 Summit 2021 安全&可靠性&运维专场:主流备份技术探讨

    在openEuler Summit 2021 安全&可靠性&运维专场上,高冲对为数据安全而生,统信软件备份还原工具分享。
    的头像 发表于 11-10 17:42 1546次阅读
    欧拉 Summit 2021 安全&<b class='flag-5'>amp</b>;<b class='flag-5'>amp</b>;可靠性&<b class='flag-5'>amp</b>;<b class='flag-5'>amp</b>;运维专场:主流备份技术探讨

    485&amp;&amp;Modbus协议

    1.RS4851)485通信 --差分传输物理层: 通信引脚 A B使用双绞线通信。发送器: 逻辑1: A&amp;gt;B AB之间电压为+2V~+6V 逻辑0: A&amp;lt;B AB之间
    发表于 11-23 17:36 3次下载
    485&<b class='flag-5'>amp</b>;&<b class='flag-5'>amp</b>;Modbus协议

    串口mpu6050 &amp;&amp; 透传模块(LC12S_V2)教程

    软硬件1.串口mpu6050 &amp;amp;&amp;amp; 串口模块 &amp;amp;
    发表于 12-06 15:36 5次下载
    串口mpu6050 &<b class='flag-5'>amp</b>;&<b class='flag-5'>amp</b>; 透传模块(LC12S_V2)教程

    存储类&amp;作用域&amp;生命周期&amp;链接属性

    目录前言一、存储类&amp;amp;作用域&amp;amp;生命周期&amp;amp;链接属性的
    发表于 12-09 15:51 5次下载
    存储类&<b class='flag-5'>amp</b>;作用域&<b class='flag-5'>amp</b>;生命周期&<b class='flag-5'>amp</b>;链接属性

    嵌入基础:&amp;,|,^,~,<<,>>运算符使用

    &amp;,按位与功能是参与运算的两数各对应的二进位相与。只有对应的两个二进位都为1时,结果位才为1。参与运算的两个数均以补码出现。1&amp;1=11&amp;0=00&amp;1=
    发表于 01-12 20:38 0次下载
    嵌入基础:&<b class='flag-5'>amp</b>;,|,^,~,<<,>>运算符使用

    ATT7053典型应用原理图&amp;PCB&amp;BOM

    ATT7053典型应用原理图&amp;PCB&amp;BOM免费下载。
    发表于 06-14 14:20 22次下载
    ATT7053典型应用原理图&<b class='flag-5'>amp</b>;PCB&<b class='flag-5'>amp</b>;BOM

    A2B车载音频总线-车机音频&amp;amp;amp;麦克风阵列测试

    基于美格信系统的A2B车载音频总线-车机音频&amp;amp;麦克风阵列测试应用笔记
    发表于 09-19 11:04 2441次阅读
    A2B车载音频总线-车机音频&<b class='flag-5'>amp</b>;<b class='flag-5'>amp</b>;<b class='flag-5'>amp</b>;麦克风阵列测试

    如何区分Java中的&amp;amp;和&amp;amp;&amp;amp;

    首先给i赋值为0,如果i大于10,并且i++等于1,则输出“错误”和i的值。否则输出“正确”和i的值。分别用&amp;和&amp;&amp;运行,观察运行结果的不同。
    的头像 发表于 02-24 10:46 1222次阅读
    如何区分Java中的&<b class='flag-5'>amp</b>;<b class='flag-5'>amp</b>;和&<b class='flag-5'>amp</b>;<b class='flag-5'>amp</b>;&<b class='flag-5'>amp</b>;<b class='flag-5'>amp</b>;

    HarmonyOS &amp;amp;amp;amp;润和HiSpark 实战开发,“码”上评选活动,邀您来赛!!!

    出色的系统 助力优秀的设备 为应用开发者带来丰富的体验与想象空间 正如当HarmonyOS遇见润和HiSpark 这万物互联的时代 将由你的&amp;lt; 代码 &amp;gt;来定义
    的头像 发表于 04-11 15:33 826次阅读
    HarmonyOS &<b class='flag-5'>amp</b>;<b class='flag-5'>amp</b>;<b class='flag-5'>amp</b>;<b class='flag-5'>amp</b>;润和HiSpark 实战开发,“码”上评选活动,邀您来赛!!!

    你使用shell脚本中的2&amp;gt;&amp;amp;1了吗?

    run_cmax > ./starrc_cmax.logs 2>&amp;1中的 2>&amp;1是啥意思?
    的头像 发表于 07-30 14:44 1063次阅读

    摄像机&amp;amp;amp;雷达对车辆驾驶的辅助

    摄像机&amp;amp;雷达担负着可辅助驾驶员安全驾驶的、高级驾驶辅助系统的传感功能。尼得科正在进一步推进摄像机&amp;amp;雷达的高性能化进程。
    的头像 发表于 11-26 10:02 517次阅读
    摄像机&<b class='flag-5'>amp</b>;<b class='flag-5'>amp</b>;<b class='flag-5'>amp</b>;雷达对车辆驾驶的辅助