有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

boolean在Java中,false如何可能等于true

在本程序中,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) 个答案

  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方法,第二行将在main之外作为单独的块

  2. # 2 楼答案

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

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

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

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