第二章Java语言基础
2.2 流程控制语句
2.2.1 顺序结构语句
赋值语句
int i = 1;
i += 10;
i++;
i+1; //错误,没有赋值功能的语句不能作为语句,应该是i+=1;
空语句
i = 1; ; //第二个分号为空语句
复合语句
int i = 1; int i = 1;
if(i == 1){ if(i ==1)
i += 1; i += 1;
i++; i++;
}
System.out.println(i); System.out.println(i);
如果有花括号括住,则i++语句在if条件下执行,如果没有花括号,则i+=1语句在if条件下执行,i++独立顺序执行
2.2.2 选择语句
if语句
if是如果的意思,如果括号内的表达式为true,则执行if所属的语句;如果不满足括号内的表达式,则执行else(否则)所属的语句
int i = 1; //定义变量i
int j = 2; //定义变量j
int max; //定义一个最大值max
if(i > j) //判断i是否大于j
max = i; //如果i大于j,则执行该条语句
else //if条件判断失败,则转入该行
max = j; //如果i不大于j,则执行该条语句
System.out.println(i); //输出i
⚠️注意:if(i = 0)语法错,运算结果是int类型,不是boolean类型
if(i > = 100 && i <= 999) //该条语句判断i是否为一个三位数,当if语句有多个判断条件时,可组成符合条件
if(i >= 100)
if(i <= 999) //if语句可以嵌套使用
if(i >= 100)
if(i < = 999)
i++;
else
System.out.println(i); //若两条if语句只有一个else,java默认else属于离它最近的那条,也就是第二条if语句。
if(i >= 100) {
if(i < = 999)
i++;
}
else
System.out.println(i); //如果想要使else语句属于第一条if语句,则可以把第二个if语句用花括号括起来
if(i > =100)
i++;
else if(i < 0)
i--;
System.out.println(i); //除了if-else组合,还可以通过else if(否则如果)完成
switch语句
如果条件很多,if语句嵌套可以实现所需功能,但代码不简洁不够直观。
if(i == 1)
if(i == 2)
if(i == 3)
此时采用switch语句可以很好的解决问题
switch(表达式){
case 常量表达式
语句;
break;
case 常量表达式
语句;
break;
···
default //default可添加可不添加
语句;
}
我们来看一个例题:
Scanner sc = new Scanner(System.in); //new一个Scanner对象sc,它可以完成输入功能
int month = sc.nextInt(); //定义一个int类型的变量month,输入的值赋值给month
switch(month) { //进入switch语句,根据month选择对应case
case 1: //如果month为1,执行该条语句,没有break所以case穿透到有break的case
case 2: //如果month为2,执行该条语句,没有break所以case穿透到有break的case
case 12: //如果month为12,执行该条语句
System.out.println("冬天"); //输出冬天
break; //遇到break跳出switch结束运行
case 3: //如果month为3,执行该条语句,没有break所以case穿透到有break的case
case 4: //如果month为4,执行该条语句,没有break所以case穿透到有break的case
case 5: //如果month为5,执行该条语句
System.out.println("春天"); //输出春天
break; //遇到break跳出switch结束运行
case 6: //如果month为6,执行该条语句,没有break所以case穿透到有break的case
case 7: //如果month为7,执行该条语句,没有break所以case穿透到有break的case
case 8: //如果month为8,执行该条语句
System.out.println("夏天"); //输出夏天
break; //遇到break跳出switch结束运行
case 9: //如果month为9,执行该条语句,没有break所以case穿透到有break的case
case 10: //如果month为10,执行该条语句,没有break所以case穿透到有break的case
case 11: //如果month为11,执行该条语句
System.out.println("秋天"); //输出秋天
break; //遇到break跳出switch结束运行
default: //如果输入1-12月份以外的月份,执行该条语句
System.out.println("你输入的月份有误"); //输出“你输入的月份有误”,没有break语句,继续输入
}
2.2.3 循环语句
while语句
int i = 1;
int n = 10;
int sum = 0;
while(i <= n) { //当(i<=n)=true时执行下面语句,直到false为止
sum += i;
i++;
}
System.out.println(i);
while(1) {
System.out.println("1"); //1为true,死循环
}
do-while语句
int i = 1;
int n = 10;
int sum = 0;
do {
sum += i;
i++;
}
while(i <= n); //执行完do语句的内容后再判断,为true继续执行do语句,为false结束运行
for语句
for(表达式1;表达式2;表达式3) { //表达式1为循环控制变量赋初值,表达式2是循环条件,表达式3改变循环控制变量的值
语句
}
for(i = 1;i <= 3;i ++){
System.out.println(i);
}
2.2.4 转移语句
return语句
使程序从方法中返回至方法调用处,并为方法返回一个值。
return i;
break语句
跳出当前switch/循环语句
continue语句
结束当前循环,回到循环条件