智能摘要文章源自JAVA秀-https://www.javaxiu.com/29072.html
它势必要有能力在执行的时候能够动态改动值。如果能够重新类似a方法的执行方法似乎就能够做到这种结果。看到这个答案,我猜搞Java或其他面向对象语言的同学有些"懵逼"。文章源自JAVA秀-https://www.javaxiu.com/29072.html
原文约 1448 字 | 图片 5 张 | 建议阅读 3 分钟 | 评价反馈文章源自JAVA秀-https://www.javaxiu.com/29072.html
快手二面:a==1 && a==2 && a==3 是 true 还是 false?
程序员闪充宝 文章源自JAVA秀-https://www.javaxiu.com/29072.html
文章源自JAVA秀-https://www.javaxiu.com/29072.html
作者:码农登陆文章源自JAVA秀-https://www.javaxiu.com/29072.html
来源:https://www.toutiao.com/i6805578326279717390文章源自JAVA秀-https://www.javaxiu.com/29072.html
前言
最近无意间看到一个有趣的帖子:文章源自JAVA秀-https://www.javaxiu.com/29072.html
var a = ???;if(a == 1 && a == 12){ console.log(a);}
这是一个JS社区抛出来的问题。第一眼看到这个问题的时候,感觉这似乎是一个无稽之谈,一个变量怎么可能会同时满足俩个条件呢!文章源自JAVA秀-https://www.javaxiu.com/29072.html
不过后来深入思考一下,发现这类问题有点意思...文章源自JAVA秀-https://www.javaxiu.com/29072.html
如果你也觉得不可能的话,一起随着文章看下去。你也会觉得有点意思~文章源自JAVA秀-https://www.javaxiu.com/29072.html
下文不仅仅涉及的是JS,还有Java等等其他语言~文章源自JAVA秀-https://www.javaxiu.com/29072.html
接下来咱们来尝试解决这个问题。假设 if(a==1&&a==12)是等于 true的,那么a肯定不可能是一个“普通的变量”。它势必要有能力在执行的时候能够动态改动值。文章源自JAVA秀-https://www.javaxiu.com/29072.html
一、JS版本
如果出于这种出发点,我们是不是能够假设:如果能够重新类似a方法的执行方法似乎就能够做到这种结果。文章源自JAVA秀-https://www.javaxiu.com/29072.html
接下来这里贴一种答案:文章源自JAVA秀-https://www.javaxiu.com/29072.html
文章源自JAVA秀-https://www.javaxiu.com/29072.html
看到这个答案,我猜搞Java或其他面向对象语言的同学有些“懵逼”。不过如果仔细看,仔细想其实也是可能从中看出一些解题思路的。文章源自JAVA秀-https://www.javaxiu.com/29072.html
当然可能有JS的小伙伴想要求解答,这里碰巧写过解析,这里就贴出他的文章地址文章源自JAVA秀-https://www.javaxiu.com/29072.html
看了JS的答案,我一直顺着这个解题思路再想:Java中有没有可能完成这个等式?只能说自己“功力太浅”始终没有找到合适的解决方式...因此自己就Google了一下,发现果然有“闲的蛋疼”的人提供了答案,甚至还提供了多种版本:文章源自JAVA秀-https://www.javaxiu.com/29072.html
二、Java版本
这里就直接贴答案了,虽然不能说非常的贴近于题目,但也着实展示了其中的巧妙:文章源自JAVA秀-https://www.javaxiu.com/29072.html
Class cache = Integer.class.getDeclaredClasses()[0];Field c = cache.getDeclaredField("cache");c.setAccessible(true);Integer[] array = (Integer[]) c.get(cache);// array[129] is 1array[130] = array[129]; // Set 2 to be 1array[131] = array[129]; // Set 3 to be 1Integer a = 1;if(a == (Integer)1 && a == (Integer)2 && a == (Integer)3){ System.out.println("Success");}
另一个答案,说实话比较“牛逼”了:文章源自JAVA秀-https://www.javaxiu.com/29072.html
这里用到了PowerMockRunner,也算是咱们解题思路的上最直接的帮手...文章源自JAVA秀-https://www.javaxiu.com/29072.html
文章源自JAVA秀-https://www.javaxiu.com/29072.html
尾声
写这篇文章其实并不是为了去深挖这些语言特性,只是单纯的觉得很有意思。文章源自JAVA秀-https://www.javaxiu.com/29072.html
如果从这个题目本身出发,它既可以考察解题者的语言特性掌握程度;也可以考察出解题者对待问题,尝试解决问题的方法论。学习这条路上,任重而道远...文章源自JAVA秀-https://www.javaxiu.com/29072.html
Spring Boot + Spring Security + Thymeleaf 实战教程!SpringBoot注解最全详解(整合超详细版本)为什么不推荐使用BeanUtils属性转换工具!老程序员都不用...Docker + FastDFS + Spring Boot 一键式搭建分布式文件服务器八幅漫画理解使用 JWT 设计的单点登录系统在 IDEA 中的各种调试技巧,轻松定位 Bug(超级全面)点击阅读全文前往微服务电商教程文章源自JAVA秀-https://www.javaxiu.com/29072.html
阅读原文文章源自JAVA秀-https://www.javaxiu.com/29072.html

评论