在Java中,假等于真怎么可能

2022-09-01 22:37:17

在这个程序中,false如何等于true:

public class Wow {
    public static void main(String[] args) {
        if ( false == true ){ // \u000a\u007d\u007b
            System.out.println("How is it possible!!!");
        }
    }
}

答案 1

好吧,我会慷慨地假设这个问题是出于无辜。

Java 编译器在过程的早期解析 Unicode 转义序列。特别是,它在剥离注释或检查语法之前执行此操作。由于 是换行符,是字符 “}” 并且是字符 “{”,解析器实际上是在解析此程序:\u000a\u007d\u007b

public class Wow{
    public static void main(String[] args) {
        if ( false == true ){ // 
}{
            System.out.println("How is it possible!!!");
        }
    }
}

该程序将始终打印“不可能”的输出。


答案 2

我只是在尝试这个问题,(答案也是),并发现了有趣的行为

public class TestUniCode {

    public static void main(String[] args) {
        System.out.println(" Printing first line");
        // \u000a\u007d\u007b
        System.out.println(" Printing second line");
    }
}

非常令人惊讶的是(对我来说),它只打印,而忽略了第二行Printing first line

编辑 - 我明白了,它在第一行之后关闭主方法,第二行将在主线外作为单独的块