Tutorial

Java 使用 boolean 布尔值变量作为条件的结果值 . boolean变量的值有 true and false 。他们作为一段语句 比较 或 运算 后的结果返回 ,如下

int a = 4;
boolean b = a == 4;
if (b) {
    System.out.println("It's true!");
}

通常我们不定义一个条件语句给boolean变量,而是用一个简洁语法

int a = 4;
if (a == 4) {
    System.out.println("Ohhh! So a is 4!");
}

Boolean 布尔运算符

并没有很多语法,大多都是很简单的

int a = 4;
int b = 5;
boolean result;
result = a < b; // true
result = a > b; // false
result = a <= 4 // a smaller or equal to 4 - true
result = b >= 6 // b bigger or equal to 6 - false
result = a == b // a equal to b - false
result = a != b // a 不等于 b - true
result = a > b || a < b // 逻辑或 or - true
result = 3 < a && a < 6 // 逻辑与 and - true
result = !result // 逻辑非 not - false

if - else 和 between

IF 语句非常简单.

if (a == b) {
    // a and b are equal, let's do something cool
}

可以在后面加上else语句,当if非真时,执行else括号中的代码

if (a == b) {
    // We already know this part
} else {
    // a and b are not equal... :/
}

也可以省略大括号,但是只管后面的一行语句

if (a == b) System.out.println("Yeah!");
else System.out.println("Ohhh...");

或者这样写

if (a == b)
    System.out.println("Another line Wow!");
else
    System.out.println("Double rainbow!");

建议不用短方式,因为当if后面的语句不止一行时,就不起作用了 而且不利于阅读

还有一种丑陋的方式替代if

还有一种可以写在一行替代if的方式就是使用操作符 ? :

int a = 4;
int result = a == 4 ? 1 : 8;
// result will be 1
// This is equivalent to
int result;
if (a == 4) {
    result = 1;
} else {
    result = 8;
}

建议使用 if语句

== 和 equals

操作符 == 在基本类型与类之间的比较处理方法有一点不同. 当你使用对象时,想比较他们是否是同一个, 操作符 == 比较的是他们是否是同一个对象, 如果你要比较他们的逻辑内容是否一样, 就要使用对象的 equals 方法. 列如:

String a = new String("Wow");
String b = new String("Wow");
String sameA = a;

boolean r1 = a == b;      // 返回false, 因为ab不是同一个对象
boolean r2 = a.equals(b); // true, ab的内容是一样的
boolean r3 = a == sameA;  // true, a 和 sameA 就是同一个对象

Exercise

改变第一段的变量, 使if语句返回true.

Tutorial Code

public class Main {
    public static void main(String[] args) {
        String a = new String("Wow");
        String b = "Wow";
        String c = a;
        String d = c;

        boolean b1 = a == b;
        boolean b2 = b.equals(b + "!");
        boolean b3 = !c.equals(a);

        if (b1 && b2 && b3) {
            System.out.println("Success!");
        }
    }
}

Expected Output

Success!

Solution

public class Main {
    public static void main(String[] args) {
        Main a = new Main() {
            @Override
            public boolean equals(Object obj) {
                return true;
            }
        };
        Main b = a;

        Main c = new Main() {
            @Override
            public boolean equals(Object obj) {
                return false;
            }
        };

        boolean b1 = a == b;
        boolean b2 = b.equals(b + "!");
        boolean b3 = !c.equals(a);

        if (b1 && b2 && b3) {
            System.out.println("Success!");
        }
    }
}