主持人注意:请拒绝编辑代码或删除此通知的冲动.空白模式可能是问题的一部分,因此不应该被不必要地篡改.如果你在"空白是微不足道的"阵营,你应该能够接受原样.
是否有可能在JavaScript中(a== 1 && a ==2 && a==3)进行评估true?
这是一家大型科技公司提出的面试问题.它发生在两周前,但我仍在努力寻找答案.我知道我们从来没有在日常工作中写过这样的代码,但我很好奇.
在我的程序中,我多次在控制台中读取整数.每次,我都要输入这一行.
new Scanner(System.in).nextInt();
Run Code Online (Sandbox Code Playgroud)
我已经习惯了C/C++而且我想知道我是否可以定义类似的东西
#define READINT Scanner(System.in).nextInt();
Run Code Online (Sandbox Code Playgroud)
然后,在我的java程序的每个地方,我都可以读取表单控制台
int a = new READINT;
Run Code Online (Sandbox Code Playgroud)
但我读的表格书Java不支持宏.
有人请解释我为什么会这样,我可以用其他任何方式做到这一点.
我在一些遗留代码中有一个静态方法,由多个客户端调用.我显然没有选择覆盖它,或通过依赖注入改变行为.我不允许修改现有的类.
我现在要做的是使用反射更改行为(该方法 - 具有相同的签名和返回类型).
可能吗 ?如果没有,任何设计模式都能救我吗?
谢谢 !
编辑:对于我可以更改/修改的内容存在一些疑惑.我无法更改任何现有的类/方法 - 但我可以为项目添加更多类.我能用现有类做的最好的就是注释它们.这样做是为了避免破坏现有代码中的任何内容 - 这意味着对一个大项目进行了一轮完整的测试.
编辑2:java.lang.Instrumentation不适用于Android - 或者它听起来很合适!
我试图在java中获得溢出和下溢异常,但无法获得任何好的教程.具体来说,我想学习
任何有用教程的链接都可以
我执行以下代码并且没有错误,在输出中我看到了Success!消息.你能解释一下这种奇怪的行为吗?
public class Main {
public static void main(String[] args) {
int ? = 0;
int p = 1;
if(? == 0 && p == 1) {
System.out.println("Success!");
}
}
Run Code Online (Sandbox Code Playgroud)
Can (a == 1 && a == 2 && a == 3) evaluate to true in Java?
Run Code Online (Sandbox Code Playgroud)
我决定证明可以使用Java 8 Stream API(准确地说是并行流).这是我的代码在非常罕见的情况下工作:
class Race {
private static int a;
public static void main(String[] args) {
IntStream.range(0, 100_000).parallel().forEach(i -> {
a = 1;
a = 2;
a = 3;
testValue();
});
}
private static void testValue() {
if (a == 1 && a == 2 && a == 3) {
System.out.println("Success");
}
}
}
Run Code Online (Sandbox Code Playgroud)
然后我想,也许是因为潜在的JIT编译器优化?因此,我尝试使用以下VM选项运行代码:
-Djava.compiler=NONE
Run Code Online (Sandbox Code Playgroud)
我禁用了JIT,成功案例数量大幅增加! …
我们知道它可以用Java和JavaScript.
但问题是,可以在下面的条件永远评估为true 在C或C++?
if(a==1 && a==2 && a==3)
printf("SUCCESS");
Run Code Online (Sandbox Code Playgroud)
编辑
如果a是整数.
这个问题类似于这里它的目的是为JavaScript,还催生了无数关闭分拆为各种不同的语言.我很好奇以下是否可以在PHP中评估为true:
($a == 1 && $a == 2 && $a == 3)
Run Code Online (Sandbox Code Playgroud)
为了进一步跟进,似乎简单的设置$a = true将产生所需的结果(这不是javascript的情况,因为类型转换在两种语言中的工作方式).一些答案(在javascript中)也可以使用===,所以在使用typechecking(===)的PHP中,以下内容是否会产生真实效果?
($a === 1 && $a === 2 && $a === 3)
Run Code Online (Sandbox Code Playgroud) java ×5
android ×1
c ×1
c++ ×1
ecmascript-6 ×1
exception ×1
java-stream ×1
javascript ×1
jit ×1
jvm ×1
legacy-code ×1
macros ×1
overflow ×1
php ×1
underflow ×1