Java If Else
在编程中,我们经常需要基于特定条件执行不同的代码块。Java 提供了 if-else
语句来实现这种条件性执行。这是 Java 编程中最基础也是最常用的控制流语句之一。
什么是条件语句?
条件语句允许程序根据特定条件的真假来决定执行哪段代码。想象一下,如果下雨了(条件),你会带伞(动作);否则,你不会带伞。这就是条件语句的基本逻辑。
基本 if 语句
最简单的条件语句是 if
语句,语法如下:
if (条件) {
// 当条件为 true 时执行的代码
}
当括号中的条件评估为 true
时,大括号 {}
中的代码块会被执行。如果条件为 false
,程序将跳过该代码块。
示例:
public class BasicIfDemo {
public static void main(String[] args) {
int temperature = 25;
if (temperature > 20) {
System.out.println("今天天气很暖和!");
}
}
}
输出:
今天天气很暖和!
在这个例子中,因为温度 25 大于 20,所以条件 temperature > 20
为 true
,因此打印出 "今天天气很暖和!"。
if-else 语句
如果我们想在条件为 false
时执行另一段代码,可以使用 if-else
语句:
if (条件) {
// 当条件为 true 时执行的代码
} else {
// 当条件为 false 时执行的代码
}
示例:
public class IfElseDemo {
public static void main(String[] args) {
int temperature = 15;
if (temperature > 20) {
System.out.println("今天天气很暖和!");
} else {
System.out.println("今天天气有点凉!");
}
}
}
输出:
今天天气有点凉!
在这个例子中,因为温度 15 不大于 20,所以条件 temperature > 20
为 false
,因此执行 else
块中的代码,打印出 "今天天气有点凉!"。
if-else-if 语句
当我们需要测试多个条件时,可以使用 if-else-if
语句:
if (条件1) {
// 当条件1为 true 时执行的代码
} else if (条件2) {
// 当条件1为 false 且条件2为 true 时执行的代码
} else {
// 当所有条件都为 false 时执行的代码
}
示例:
public class IfElseIfDemo {
public static void main(String[] args) {
int score = 85;
if (score >= 90) {
System.out.println("优秀");
} else if (score >= 80) {
System.out.println("良好");
} else if (score >= 60) {
System.out.println("及格");
} else {
System.out.println("不及格");
}
}
}
输出:
良好
在这个例子中,分数 85 满足第二个条件 score >= 80
,所以打印出 "良好"。注意,即使 85 也满足第三个条件 score >= 60
,但由于程序已经执行了第二个条件对应的代码块,它会跳过后续的 else if
和 else
块。
在 if-else-if 语句中,条件是按顺序检查的,一旦某个条件满足,其对应的代码块会被执行,然后程序会跳过剩余的条件检查。
嵌套 if-else 语句
我们也可以在一个 if
或 else
块中嵌套另一个 if-else
语句:
if (外部条件) {
// 外部条件为 true 时执行的代码
if (内部条件) {
// 内部条件为 true 时执行的代码
} else {
// 内部条件为 false 时执行的代码
}
} else {
// 外部条件为 false 时执行的代码
}
示例:
public class NestedIfElseDemo {
public static void main(String[] args) {
int age = 25;
boolean hasID = true;
if (age >= 18) {
System.out.println("您已成年");
if (hasID) {
System.out.println("您可以购买酒类产品");
} else {
System.out.println("请出示您的身份证");
}
} else {
System.out.println("您未成年,不能购买酒类产品");
}
}
}
输出:
您已成年
您可以购买酒类产品
在这个例子中,因为 age >= 18
为 true
,所以执行第一个打印语句。然后,因为 hasID
也为 true
,所以执行内部 if
块中的打印语句。
嵌套的 if-else 语句可能会使代码难以阅读和维护。如果嵌套层次太深,考虑重构代码,可能使用方法或其他控制流语句来简化逻辑。
三元运算符
Java 还提供了一种简写的条件表达式,称为三元运算符(ternary operator),语法如下:
条件 ? 表达式1 : 表达式2
如果条件为 true
,整个表达式的值为 表达式1
;如果条件为 false
,整个表达式的值为 表达式2
。
示例:
public class TernaryOperatorDemo {
public static void main(String[] args) {
int age = 20;
String status = (age >= 18) ? "成年" : "未成年";
System.out.println(status);
}
}
输出:
成年
在这个例子中,因为 age >= 18
为 true
,所以 status
的值为 "成年"。
三元运算符适用于简单的条件判断,特别是当你需要基于条件给变量赋值时。但对于复杂的逻辑,还是应该使用标准的 if-else
语句以保持代码的清晰度。
实际应用场景
让我们看几个 if-else
语句在实际编程中的应用场景。
场景1:用户登录验证
public class LoginExample {
public static void main(String[] args) {
String username = "admin";
String password = "1234";
if (username.equals("admin") && password.equals("password123")) {
System.out.println("登录成功!");
} else {
System.out.println("用户名或密码错误,请重试。");
}
}
}
输出:
用户名或密码错误,请重试。
场景2:商品折扣计算
public class DiscountCalculator {
public static void main(String[] args) {
double totalAmount = 1200.0;
double finalAmount;
if (totalAmount > 1000) {
finalAmount = totalAmount * 0.9; // 10% 折扣
System.out.println("您已获得10%的折扣!");
} else if (totalAmount > 500) {
finalAmount = totalAmount * 0.95; // 5% 折扣
System.out.println("您已获得5%的折扣!");
} else {
finalAmount = totalAmount; // 无折扣
System.out.println("消费满500元可享受折扣!");
}
System.out.println("最终金额:" + finalAmount + "元");
}
}
输出:
您已获得10%的折扣!
最终金额:1080.0元
场景3:成绩等级判定
public class GradeCalculator {
public static void main(String[] args) {
int score = 76;
char grade;
if (score >= 90) {
grade = 'A';
} else if (score >= 80) {
grade = 'B';
} else if (score >= 70) {
grade = 'C';
} else if (score >= 60) {
grade = 'D';
} else {
grade = 'F';
}
System.out.println("学生成绩:" + score);
System.out.println("等级:" + grade);
}
}
输出:
学生成绩:76
等级:C
条件表达式的注意事项
- 布尔表达式:条件必须是能够评估为
boolean
类型(true
或false
)的表达式。 - 比较运算符:常用于条件中的比较运算符包括
==
(等于)、!=
(不等于)、>
(大于)、<
(小于)、>=
(大于等于)和<=
(小于等于)。 - 逻辑运算符:可以使用
&&
(与)、||
(或)和!
(非)来组合多个条件。 - 大括号
{}
:即使if
或else
块中只有一条语句,建议始终使用大括号,这样可以避免出现逻辑错误,并且使代码更加清晰。
在比较对象时,使用 ==
运算符比较的是对象引用是否相同,而不是对象的内容。如果要比较字符串内容是否相同,应该使用 equals()
方法,例如:str1.equals(str2)
。
总结
if-else
语句是 Java 中基本且强大的控制流机制,允许程序根据特定条件执行不同的代码块。
我们学习了:
- 基本的
if
语句 if-else
语句if-else-if
多重条件语句- 嵌套的
if-else
语句 - 三元运算符作为简写的条件表达式
- 实际应用场景中的
if-else
使用
掌握好 if-else
语句是编写有效 Java 程序的基础,它让你的代码能够根据不同情况做出相应的响应,从而实现更加智能和灵活的功能。
练习题
为了巩固你的学习,试试以下练习:
- 编写一个程序,根据用户输入的年龄,判断并输出他们属于哪个年龄组(儿童:0-12,青少年:13-19,成年人:20-59,老年人:60+)。
- 创建一个简单的计算器程序,根据用户输入的两个数和操作符(+、-、*、/),执行相应的计算并输出结果。
- 编写一个程序,判断用户输入的年份是否为闰年(提示:闰年的规则是能被4整除但不能被100整除,或者能被400整除)。
扩展阅读
掌握好 if-else
语句后,你可以继续学习其他控制流语句,如 switch
、while
循环和 for
循环,它们共同构成了 Java 编程的基础控制结构。