如何在Java中将false视为真等

时间:2013-12-04 19:04:01

标签: java boolean

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

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

2 个答案:

答案 0 :(得分:44)

好吧,我会慷慨地认为这个问题是出于无罪而被问到的。

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

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

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

答案 1 :(得分:1)

我只是在尝试这个问题,(也回答),并找到了有趣的行为

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,而忽略了第二行

编辑 - 据我所知,它在第一行后关闭主方法,第二行将在main之外作为单独的块