1. 运算符 if else
如果程序不管外部情况如何变化都做同样的事情,那就没有什么用处了。程序需要能够适应不同的情境:在一种情况下做这一些事,在另一种情况下做另一些事。
在 Java 中,这通过条件语句实现——关键字 if 和 else,它们允许根据条件的真值执行不同的语句块。
条件语句由三部分组成:条件、命令 1 和 命令 2。如果 条件为真,则执行命令 1,否则执行命令 2。两个命令不会同时执行。该运算符的一般形式如下:
if (条件)
命令1;
else
命令2;
if-else
if 可理解为“如果”,而 else 可理解为“否则”。用自然语言可以这样描述:
如果 条件 为真,则
执行 命令1;
否则
执行 命令2;
if-else 的自然语言描述
示例:
// 屏幕将输出:你还是个孩子
int age = 17;
if (age < 18)
System.out.println("你还是个孩子");
else
System.out.println("你已经是成年人了");
// 屏幕将输出:暖和
int temperature = 5;
if (temperature < 0)
System.out.println("外面很冷");
else
System.out.println("暖和");
// 屏幕将输出:可以去考驾照
int age = 18;
if (age == 18)
System.out.println("可以去考驾照");
else
System.out.println("可以攒钱买车");
2. 语句块
如果在条件成立(或不成立)时,你希望程序执行多条语句,可以将它们合并为一个语句块。
要把语句合并成一个块,需要用大括号“包裹”它们。一般形式如下:
{
命令1;
命令2;
命令3;
}
块中可以有任意多条语句,甚至可以为零。
将 if-else 与语句块结合的示例:
// 屏幕将输出:你还是个孩子。别和大人顶嘴
int age = 17;
if (age < 18)
{
System.out.println("你还是个孩子");
System.out.println("别和大人顶嘴");
}
else
{
System.out.println("你已经是成年人了");
System.out.println("现在的年轻人啊");
}
// 屏幕将输出:暖和
int temperature = 5;
if (temperature < 0)
{
System.out.println("外面很冷");
System.out.println("戴上帽子");
}
else
System.out.println("暖和");
// 将执行一个空的语句块。屏幕上不会输出任何内容。
int age = 21;
if (age == 18)
System.out.println("可以拿驾照");
else
{
}
3. if 的简写语法
如果 else 块中的代码不存在,则可以省略它。此时 if 语句如下:
if (条件)
{
命令1;
}
if
示例:
int age = 19;
if (age >= 18)
{
System.out.println("你已成年!");
}
这是如何工作的?
如果条件为真,则执行代码块;如果为假,则什么也不做——程序继续向下执行。
程序中可以有 else 块,但为空(大括号之间没有任何语句)。也可以直接删除它:程序行为不会发生变化。
4. 条件组合:else if
有时不只是“是/否”的选择,而是需要在多个选项中做出选择。这时可以使用 else if 组合:
if (条件1)
{
// 当 条件1 为真时执行
}
else if (条件2)
{
// 当 条件2 为真且 条件1 为假时执行
}
else
{
// 当以上条件都不满足时执行
}
示例:
int hour = 13;
if (hour < 12)
{
System.out.println("早上好!");
}
else if (hour < 18)
{
System.out.println("下午好!");
}
else
{
System.out.println("晚上好!");
}
这里发生了什么?
- 如果时间小于 12 点——是早上。
- 如果在 12 点到 18 点之间——是下午。
- 如果更大——是晚上。
- 程序只会选择其中的一个分支!一旦某个条件满足——后面的条件将不会再被检查。
5. 示意图:分支流程图
以下是以流程图形式的表现:
如果有多个条件:
这很像桌面角色扮演游戏中的分岔:往左——一种情况;往右——另一种;直走——又是别的!
6. 可以检查哪些条件?
在 if 后的圆括号内必须是布尔表达式——其结果为 true 或 false。
主要比较运算符:
| 运算符 | 含义 | 示例 |
|---|---|---|
|
等于 | |
|
不等于 | |
|
大于 | |
|
小于 | |
|
大于或等于 | |
|
小于或等于 | |
条件示例:
if (number == 10)
if (age != 18)
if (temperature > 36)
if (balance <= 0)
请注意:=(一个等号)表示赋值;==(两个等号)表示比较。这是新手最常见的错误之一!如果你不小心写成:
if (x = 5) // 错误!
——编译器会报错并警告你,这样做很有必要。
7. 在条件中处理字符串
在 Java 中,用 == 比较对整数是正确的。对浮点数不建议使用 == 比较;对字符串则不能使用 ==——请使用 equals() 方法,它比较的是字符串的内容(而不是引用)。
关于字符串比较的细节我们稍后再谈。如下例所示是正确的字符串比较方式:
String password = console.nextLine();
if (password.equals("qwerty")) // 调用 equals() 方法并传入第二个字符串
{
System.out.println("你已登录!");
}
8. 特性与注意事项:
大括号:要不要写?
如果在 if 或 else 后只有一条语句,可以省略大括号:
if (age > 18)
System.out.println("你大于 18 岁!");
// 但总是写上大括号更安全:
if (age > 18)
{
System.out.println("你大于 18 岁!");
}
建议:始终写上大括号。这能避免一大堆错误,尤其是在扩展代码时。
逻辑错误:请留心条件!
如果你这样写:
if (age > 18)
System.out.println("你大于 18 岁!");
System.out.println("欢迎!");
编译器会这样理解这段代码:
if (age > 18)
{
System.out.println("你大于 18 岁!");
}
System.out.println("欢迎!");
第二行总是会执行——需要使用大括号,才能把两行代码都放在同一个分支中。
GO TO FULL VERSION