内容纲要
顺序结构
public class Test {
public static void main(String[] args) {
System.out.println("步骤一");
System.out.println("步骤二");
System.out.println("步骤三");
}
}
顺序结构是程序最常用的,基本的组成部分。
语句一条一条按顺序执行,流程图如下:
选择结构
进行判断,进入指定的分支进行执行
if语句
if(表达式){语句体}
:先判断表达式,如果为真,则执行里的语句体,如果为假,不执行。
public class Test {
public static void main(String[] args) {
int score = 70;
if(score >= 60) {
System.out.println("成绩及格了");
}
System.out.println("结束");
}
}
if(表达式){语句体一} else{语句体二}
:先判断表达式,如果为真,则执行里的语句体一,如果为假,则执行
else{语句体二}
。
public class Test {
public static void main(String[] args) {
int score = 70;
if(score >= 60) {
System.out.println("成绩及格了");
}else{
System.out.println("成绩不及格");
}
System.out.println("结束");
}
}
- 嵌套使用
if(表达式一){语句体一} else if(表达式二){语句体二}else{}
:先判断表达式一,如果为真,则执行里的语句体一,如果为假,则继续判断表达式二,如果为真,执行
else{语句体二}
,依次循环。
public class Test {
public static void main(String[] args) {
int score = 70;
if(score >= 90) {
System.out.println("成绩优秀");
}else if(score >= 70){
System.out.println("成绩良好");
}else if(score >= 60) {
System.out.println("成绩合格");
}else {
System.out.println("成绩不及格");
}
System.out.println("结束");
}
}
若只有一条语句体时,也可以像C语言一样不写
,但是建议写。
switch语句
switch
语句根据表达式的结果执行case
结果,然后继续执行后续语句,若没有break
则执行下一个case
,直到遇到break
结束执行。switch(表达式)
里的表达式必须是整型、字符或字符串、枚举类型。
public class Test {
public static void main(String[] args) {
int score = 70;
switch(score / 10) {
case 10:
case 9:
System.out.println("成绩优秀");
break;
case 8:
case 7:
System.out.println("成绩良好");
break;
case 6:
System.out.println("成绩合格");
break;
default:
System.out.println("成绩不及格");
break;
}
System.out.println("结束");
}
}
新特性
从
JDK12
开始,switch
语句更新了更简洁的表达式语法,不再需要break来结束。在->
之后如果有多条语句,需要用括起来。并且多个
case
之间用,
来连接。
public class Test {
public static void main(String[] args) {
int score = 70;
switch(score / 10) {
case 10 -> {
System.out.println("成绩很优秀");
System.out.println("获奖了!");
}
case 9 -> System.out.println("成绩优秀");
case 8,7 -> System.out.println("成绩良好");
case 6 -> System.out.println("成绩合格");
default -> System.out.println("成绩不及格");
}
System.out.println("结束");
}
}
switch
还可以由于直接赋值,但是在switch(表达式){}
之后必须用;
。
public class Test {
public static void main(String[] args) {
int score = 70;
String result = switch(score / 10) {
case 10 -> "成绩很优秀";
case 9 -> "成绩优秀";
case 8,7 -> "成绩良好";
case 6 -> "成绩合格";
default -> "成绩不及格";
};
System.out.println(result);
System.out.println("结束");
}
}
并且在多条语句的时候,使用
yield
关键字返回值。
public class Test {
public static void main(String[] args) {
int score = 100;
String result = switch(score / 10) {
case 10 -> {
String no = "获奖了,整数编号:15234535";
yield no;
}
case 9 -> "成绩优秀";
case 8,7 -> "成绩良好";
case 6 -> "成绩合格";
default -> "成绩不及格";
};
System.out.println(result);
System.out.println("结束");
}
}
循环结构
在满足判断表达式的情况下反复执行循环体,需要控制条件出口,否则会发生循环等待,也就是死循环。数据类型有最大值,达到最大值后,再加1会变成负数。
while语句
while
循环先判断循环条件是否满足,再执行循环体,有可能一次都不执行。
public class Test {
public static void main(String[] args) {
int i = 10;
int sum = 0;
while(i > 0) {
sum += i;
i--;
}
System.out.println(sum);
}
}
do while语句
do while
循环先执行循环体,再判断条件,不管满不满足判断条件都会执行一次。
public class Test {
public static void main(String[] args) {
int i = 10;
int sum = 0;
do {
sum += i;
i--;
}while(i > 0);
System.out.println(sum);
}
}
for语句
可以使用
for(初始条件;条件判断;控制条件){语句体}
,可以灵活使用for()
表达式。
public class Test {
public static void main(String[] args) {
int sum = 0;
for(int i = 10;i > 0;i--) {
sum += i;
}
// int i = 10;
// for(;i > 0;) {
// sum += i;
// i--;
// }
System.out.println(sum);
}
}
增强for(for each)
在引用数据类型中,可以使用增强
for(数据类型 变量名:遍历对象){}
来遍历数据,如第一个程序HelloWorld
:
public class HelloWorld{
public static void main(String[] args){
for(String arg : args){
if("-say".equals(arg)){
System.out.println("Hello World!");
}
}
}
}
跳出
在循环语句或者switch中使用
break
,continue
来跳过循环或终止分支。
break
前面可以看到
break
可以直接终止switch
,同时也看终止循环。如果是双层循环,只会终止内层循环。
public class Test {
public static void main(String[] args) {
int sum = 0;
for(int i = 10;i > 0;i--) {
if(i == 5) {
break;
}
sum += i;
}
System.out.println(sum);//40
}
}
continue
continue
与break
不同,是因为continue
只会跳过当前循环,继续进行下一次循环,而break
是彻底终止循环。
public class Test {
public static void main(String[] args) {
int sum = 0;
for(int i = 10;i > 0;i--) {
if(i == 5) {
continue;
}
sum += i;
}
System.out.println(sum);
//50
}
}
留言