在这个程序中,false如何等于true:
public class Wow {
public static void main(String[] args) {
if ( false == true ){ // \u000a\u007d\u007b
System.out.println("How is it possible!!!");
}
}
}
答案 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之外作为单独的块