05_Java 条件语句
Java if-else 条件语句的用法和示例
Java 中的条件语句允许程序根据条件的不同执行不同的代码块。
一个 if 语句包含一个布尔表达式和一条或多条语句。
语法
if 语句的语法如下:
if(布尔表达式) {
//如果布尔表达式为true将执行的语句
}
如果布尔表达式的值为 true,则执行 if 语句中的代码块,否则执行 else 语句块后面的代码。
Test.java 文件代码:
public class Test {
public static void main(String args[]){
int x = 10;
if( x < 20 ){
System.out.print("这是 if 语句");
}
}
}
以上代码编译运行结果如下:
这是 if 语句
if...else 语句
if 语句后面可以跟 else 语句,当 if 语句的布尔表达式值为 false 时,else 语句块会被执行。
语法
if…else 的用法如下:
if(布尔表达式){
//如果布尔表达式的值为true
}else{
//如果布尔表达式的值为false
}
实例
Test.java 文件代码:
public class Test {
public static void main(String args[]){
int x = 30;
if( x < 20 ){
System.out.print("这是 if 语句");
}else{
System.out.print("这是 else 语句");
}
}
}
以上代码编译运行结果如下:
这是 else 语句
if...else if...else 语句
if 语句后面可以跟 else if…else 语句,这种语句可以检测到多种可能的情况。
使用 if,else if,else 语句的时候,需要注意下面几点:
- if 语句至多有 1 个 else 语句,else 语句在所有的 else if 语句之后。
- if 语句可以有若干个 else if 语句,它们必须在 else 语句之前。
- 一旦其中一个 else if 语句检测为 true,其他的 else if 以及 else 语句都将跳过执行。
语法
if...else 语法格式如下:
if(布尔表达式 1){
//如果布尔表达式 1的值为true执行代码
}else if(布尔表达式 2){
//如果布尔表达式 2的值为true执行代码
}else if(布尔表达式 3){
//如果布尔表达式 3的值为true执行代码
}else {
//如果以上布尔表达式都不为true执行代码
}
实例
Test.java 文件代码:
public class Test {
public static void main(String args[]){
int x = 30;
if( x == 10 ){
System.out.print("Value of X is 10");
}else if( x == 20 ){
System.out.print("Value of X is 20");
}else if( x == 30 ){
System.out.print("Value of X is 30");
}else{
System.out.print("这是 else 语句");
}
}
}
以上代码编译运行结果如下:
Value of X is 30
嵌套的 if…else 语句
使用嵌套的 if…else 语句是合法的。也就是说你可以在另一个 if 或者 else if 语句中使用 if 或者 else if 语句。
语法
嵌套的 if…else 语法格式如下:
if(布尔表达式 1){
//如果布尔表达式 1的值为true执行代码
if(布尔表达式 2){
//如果布尔表达式 2的值为true执行代码
}
}
你可以像 if 语句一样嵌套 else if...else。
实例
Test.java 文件代码:
public class Test {
public static void main(String args[]){
int x = 30;
int y = 10;
if( x == 30 ){
if( y == 10 ){
System.out.print("X = 30 and Y = 10");
}
}
}
}
以上代码编译运行结果如下:
X = 30 and Y = 10
Pattern Matching(instanceof 模式匹配,Java 16+)
传统写法中,instanceof 检查后还需要显式强制转换;Java 16 开始可以在检查的同时绑定变量:
Object obj = "Hello, Java!";
// 传统写法
if (obj instanceof String) {
String s = (String) obj; // 需要手动强转
System.out.println(s.toUpperCase());
}
// 模式匹配写法(Java 16+)
if (obj instanceof String s) { // 检查 + 声明变量 s,一步完成
System.out.println(s.toUpperCase()); // s 在 if 块内直接可用
}
变量的作用域由编译器自动推断:
static void process(Object obj) {
if (obj instanceof Integer i && i > 0) {
// i 只在此块内有效,且已确保 > 0
System.out.println("正整数:" + i);
} else if (obj instanceof String s && !s.isEmpty()) {
System.out.println("非空字符串:" + s);
} else {
System.out.println("其他:" + obj);
}
}
process(42); // 正整数:42
process("Java"); // 非空字符串:Java
process(3.14); // 其他:3.14
条件语句速查
| 语法 | 适用场景 |
|---|---|
if |
单一条件判断 |
if...else |
二选一 |
if...else if...else |
多条件链式判断 |
嵌套 if |
条件嵌套,注意层次不要过深 |
switch |
对同一变量的多个值匹配(见 switch case 章节) |
instanceof 模式匹配 |
Java 16+,类型检查 + 变量绑定一步到位 |