Java中flag和flag==true的区别

有如下 Test.java 文件

1
2
3
4
5
6
7
8
9
public class Test { 
public static void main(String[] args) {
boolean flag = true;
if (flag)
System.out.println("Hello, Java!");
if (flag == true)
System.out.println("Hello, JVM!");
}
}

此处 flag和flag == true大家认为有区别吗?

下边让我们来见证一下奇迹:

javac Foo.java 命令生成 Foo.class 文件,使用 JD-GUI 打开内容如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
import java.io.PrintStream;

public class Foo
{
public static void main(String[] paramArrayOfString)
{
int i = 1;
if (i != 0) {
System.out.println("Hello, Java!");
}
if (i == 1) {
System.out.println("Hello, JVM!");
}
}
}

大家看到不同之处了吗?