3.1 基本IF选择结构
在Java中,if语句用于根据条件执行不同的代码块。if语句是Java中最常用的控制结构之一,它使得程序能够根据不同的条件执行不同的代码,实现灵活的逻辑控制。
3.1.1 语法格式
if(condition){
//如果条件为真,则执行这里面的代码
}
解释:
- condition:是一个布尔表达式,用于判断条件是否为真或假。如果条件为真,则执行if代码块中的语句。
- if代码块:包含在if语句中的代码块,用于在条件为真时执行。
3.1.2 案列
public class Test3_1{
public static void main(String args[]){
int number=5;
if(number>0){
System.out.println(number+"是一个正数");
}
}
}
3.1.3 练习
练习1:输入两个数,按照从小到大的顺序排序
import java.util.Scanner;
public class Practice3_1{
public static void main(String args[]){
Scanner input=new Scanner(System.in);
int a,b;
//输入a的值
System.out.print("请输入a的数值:");
a=input.nextInt();
System.out.println();
//输入b的值
System.out.print("请输入b的数值:");
b=input.nextInt();
System.out.println();
//判断a,b的大小,进行排序
if(a>b){
int t;//定义变量t
t=a;
a=b;
b=t;
}
//从小到大输入结果
System.out.println("从小到大分别为:"+a+"、"+b);
}
}
练习2:输入三个数,并将他们按照从小到大的顺序排序
import java.util.Scanner;
public class Practice3_2{
public static void main(String args[]){
Scanner input=new Scanner(System.in);
int a,b,c;
//输入a的值
System.out.print("请输入a的数值:");
a=input.nextInt();
System.out.println();
//输入b的值
System.out.print("请输入b的数值:");
b=input.nextInt();
System.out.println();
//输入c的值
System.out.print("请输入c的数值:");
c=input.nextInt();
System.out.println();
//判断a,b的大小,进行排序
if(a>b){
int t;//定义变量t
t=a;
a=b;
b=t;
}
//判断a,c的大小,进行排序
if(a>c){
int t;//定义变量t
t=a;
a=c;
c=t;
}
//判断a,b的大小,进行排序
if(b>c){
int t;//定义变量t
t=b;
b=c;
c=t;
}
//从小到大输入结果
System.out.println("从小到大分别为:"+a+"、"+b+"、"+c);
}
}
3.2 IF ELSE选择结构
if-else语句是Java中常用的条件控制语句,它可以根据条件的真假执行不同的代码块。
3.2.1 基本语法
if (condition) {
// 如果条件为真,执行这里的代码块
} else {
// 如果条件为假,执行这里的代码块
}
解释:
- condition:是一个布尔表达式,用于判断条件是否为真或假。如果条件为真,则执行if代码块中的语句;如果条件为假,则执行else代码块中的语句。
- if代码块:包含在if语句中的代码块,用于在条件为真时执行。
- else代码块(可选):包含在else语句中的代码块,用于在条件为假时执行。
3.2.2 案列
public class Test3_2{
public static void main(String args[]){
int num = 10;
if (num > 0) {
System.out.println("数字是正数");
} else {
System.out.println("数字是负数或零");
}
}
}
在这个示例中,如果num大于0,则输出"数字是正数";否则,输出"数字是负数或零"。
3.2.3 练习
练习3:输入小明的数学成绩,判断小明是否及格(满分100分);
import java.util.Scanner;
public class Practice3_3{
public static void main(String args[]){
Scanner input=new Scanner(System.in);
//输入成绩
int math;
System.out.print("请输入小明的数学成绩:");
math=input.nextInt();
//判断是否及格
if(math>=60){
System.out.println("小明的数学成绩为"+math+"分,及格了");
}else{
System.out.println("小明的数学成绩为"+math+"分,不及格");
}
}
}
3.3 多重IF选择结构
除了基本的if-else语句,还可以使用多个else if语句来处理多个条件。这样可以实现更复杂的条件判断。
3.3.1 语法格式
if(condition){
// 如果条件为真,执行这里的代码块
}else if(condition){
// 如果条件为真,执行这里的代码块
}
...
else{
//不满足以上条件后,执行这里的代码块
}
解释:
- condition:是一个布尔表达式,用于判断条件是否为真或假。如果条件为真,则执行if代码块中的语句;如果条件为假,则执行else代码块中的语句。
- else if代码块:当condition条件在此代码块为真,以上的if和else if都为假时,则会执行。
- else代码块:当if和else if都不满足时,执行此代码块内容。
3.3.2 案列
public class Test3_3{
public static void main(String args[]){
int num = 10;
if (num > 0) {
System.out.println("数字是正数");
} else if (num < 0) {
System.out.println("数字是负数");
} else {
System.out.println("数字是零");
}
}
}
在这个示例中,如果num大于0,则输出"数字是正数";如果num小于0,则输出"数字是负数";如果num等于0,则输出"数字是零"。
3.3.3 练习
练习4:输入小明的成绩,根据成绩分数,判断属于那个档次(A、B、C、D、E)
import java.util.Scanner;
public class Practice3_4{
public static void main(String args[]){
Scanner input=new Scanner(System.in);
//输入成绩
int english;
System.out.print("请输入小明的数学成绩:");
english=input.nextInt();
//判断是否及格
if(english>=90){
System.out.println("小明的成绩位于A档次");
}else if(english>=80){
System.out.println("小明的成绩位于B档次");
}else if(english>=70){
System.out.println("小明的成绩位于C档次");
}else if(english>=60){
System.out.println("小明的成绩位于D档次");
}else{
System.out.println("小明的成绩位于E档次");
}
}
}
3.4 嵌套IF选择结构
嵌套if语句是指在一个if代码块中嵌套另一个if语句,以实现更复杂的条件判断。通过多重if语句,可以根据不同的条件执行不同的代码块。嵌套if语句可以根据不同的条件进行嵌套,以实现更复杂的条件判断和逻辑控制。在实际编程中,需要注意多重if语句的层级和逻辑关系,确保代码的可读性和正确性。
3.4.1 案列
public class Test3_4{
public static void main(String args[]){
int num = 10;
if (num > 0) {
System.out.println("数字是正数");
if (num % 2 == 0) {
System.out.println("数字是偶数");
} else {
System.out.println("数字是奇数");
}
} else {
System.out.println("数字是负数或零");
}
}
}
在这个示例中,首先判断num是否大于0。如果条件为真,则输出"数字是正数",然后继续判断num是否为偶数。如果num是偶数,则输出"数字是偶数";如果num是奇数,则输出"数字是奇数"。如果初始条件为假,则执行else代码块中的语句,输出"数字是负数或零"。
3.5 Switch分支结构
switch语句是Java中另一种常用的条件控制语句,它可以根据不同的取值执行相应的代码块。switch语句适用于多个固定的取值情况,可以替代嵌套if-else语句的使用。
3.5.1 基本语法
switch (expression) {
case value1:
// 当expression的值等于value1时执行这里的代码块
break;
case value2:
// 当expression的值等于value2时执行这里的代码块
break;
case value3:
// 当expression的值等于value3时执行这里的代码块
break;
// 可以有更多的case语句
default:
// 当expression的值与前面的所有case都不匹配时执行这里的代码块
break;
}
解释:
- expression:是一个表达式,其值将与每个case的值进行比较。
- case value1:表示一个取值情况,当expression的值等于value1时,执行该case下的代码块。
- break:在每个case的代码块末尾使用break语句,用于终止switch语句的执行。如果没有break语句,程序将继续执行下一个case的代码块,直到遇到break或switch语句结束。
- default:可选的default部分用于处理expression的值与所有case都不匹配的情况。如果所有的case都不匹配且没有default部分,则switch语句不执行任何操作。
3.5.2 案列
public class Test3_5{
public static void main(String args[]){
int day = 3;
String dayName;
switch (day) {
case 1:
dayName = "星期一";
break;
case 2:
dayName = "星期二";
break;
case 3:
dayName = "星期三";
break;
case 4:
dayName = "星期四";
break;
case 5:
dayName = "星期五";
break;
case 6:
dayName = "星期六";
break;
case 7:
dayName = "星期日";
break;
default:
dayName = "无效的日期";
break;
}
System.out.println("今天是" + dayName);
}
}
import java.util.Scanner;
public class Test3_6{
public static void main(String args[]){
Scanner input=new Scanner(System.in);
char ch;
System.out.print("请输入A~Z字母中的一个字母(大写):");
ch=input.next().charAt(0);//接受char类型
switch(ch){
case 'A':
case 'B':
System.out.println("恭喜你获得了一等奖");
break;
case 'C':
case 'D':
case 'E':
System.out.println("恭喜你获得了二等奖");
break;
case 'F':
case 'G':
case 'H':
System.out.println("恭喜你获得了三等奖");
break;
default:
System.out.println("继续努力");
break;
}
}
}
3.6 条件分支的代码优化
在编写if语句时,可以采取一些优化策略以提高代码的效率和可读性。
3.6.1 优化技巧
- 使用简单条件优先:将简单的条件放在if语句的前面,这样可以尽早地确定是否执行if语句块,从而减少不必要的计算。这样可以提高代码的执行效率。
- 避免冗余条件判断:如果条件判断中存在冗余的判断,可以进行简化或合并,以减少不必要的判断操作。这样可以提高代码的执行效率。
- 使用短路逻辑:在条件判断中使用短路逻辑(&&和||),可以减少不必要的判断操作。短路逻辑指的是,如果通过前面的条件已经可以确定整个表达式的结果,那么后面的条件将不再进行判断。这样可以提高代码的执行效率。
- 避免过长的条件表达式:过长的条件表达式可能会导致代码可读性下降。可以考虑将复杂的条件判断拆分成多个简单的条件判断,以提高代码的可读性。
- 使用switch语句替代多重if-else语句:如果有多个固定的取值情况,可以使用switch语句来替代多重if-else语句,以提高代码的可读性和执行效率。
- 使用位运算进行条件判断:在某些情况下,可以使用位运算来进行条件判断,以提高代码的执行效率。
- 考虑使用三元运算符:在某些简单的条件判断中,可以使用三元运算符(?:)来简化代码,提高代码的可读性。
需要注意的是,优化if语句时应注意平衡代码的可读性和执行效率。过度的优化可能会导致代码变得复杂难懂,影响代码的可维护性。因此,应根据具体的情况选择适当的优化策略。
3.6.2 案列
public class IfStatementOptimization {
public void example() {
int num = 10;
// 使用简单条件优先
if (num == 0) {
// 执行代码块
} else if (num == 1) {
// 执行代码块
} else {
// 执行代码块
}
// 避免冗余条件判断
boolean condition1 = true;
boolean condition2 = false;
if (condition1 && condition2) {
// 执行代码块
}
// 使用短路逻辑
boolean condition3 = true;
boolean condition4 = false;
if (condition3 || condition4) {
// 执行代码块
}
// 使用switch语句替代多重if-else语句
int value = 1;
switch (value) {
case 1:
// 执行代码块
break;
case 2:
// 执行代码块
break;
default:
// 执行代码块
break;
}
}
}
在上述示例中,展示了一些if语句的优化技巧,包括简单条件优先、避免冗余条件判断、使用短路逻辑和使用switch语句替代多重if-else语句。这些优化技巧可以根据实际情况灵活应用,以提高代码的效率和可读性。