目录
顺序结构
在单线程场景下,按照代码顺序一行行执行
System.out.println("a");
System.out.println("b");
System.out.println("c");
System.out.println("d");
//输出 a
b
c
d
分支结构
if语句
基本语法格式
//第一种情况
if(布尔表达式){
//条件满足时执行代码
}
//第二种情况
if(布尔表达式){
//条件满足时执行代码
}else{
//条件不满足时执行代码
}
//第三种情况-多分支
if(布尔表达式){
//条件满足时执行代码
}else if(布尔表达式){
//条件满足时执行代码
}else{
//条件都不满足时执行代码
}
注意1:悬垂else问题
int x = 10;
int y = 10;
if (x == 10)
if (y == 10)
System.out.println("aaa");
else
System.out.println("bbb");
if / else 语句中可以不加大括号 ,但是也可以写语句(只能写一条语句)
此时 else 是和最接近的 if 匹配(不建议)
注意2:;问题
int x = 20;
if (x == 10); {
System.out.println("abc");
}
// 运行结果abc
多写了一个 分号,导致分号成为了 if 语句的语句体,而 { } 中的代码已经成为了和一个 if 无关的代码块
switch语句
switch
中的值只能是 整型|字符|枚举|
字符串
基本语法格式
switch(整数|字符|枚举|字符串){
case 内容1 : {
内容满足时执行语句;
[break;]
}
case 内容2 : {
内容满足时执行语句;
[break;]
}
...
default:{
内容都不满足时执行语句;
[break;]
}
}
- 根据 switch 中值的不同,会执行对应的 case 语句, 遇到 break 就会结束该 case 语句,没有break就会一直向下执行
- 如果 switch 中的值没有匹配的 case,就会执行 default 中的语句
- switch 不能表达复杂的条件
循环结构
while循环
基本语法格式
while(循环条件){
循环语句;
}
注意
- 和 if 类似,while 下面的语句可以不写 { } , 但是不写的时候只能支持一条语句, 建议还是加上 { }
- 和 if 类似, while 后面的 { 建议和 while 写在同一行
- 和 if 类似, while 后面不要多写 分号, 否则可能导致循环不能正确执行
break关键字
break 的功能是让循环提前结束
执行到
break
就会让循环结束
continue关键字
continue
的功能是跳过这次循环, 立即进入下次循环
执行到
continue
语句的时候
,
就会立刻进入下次循环
(
判定循环条件
)
从而不会执行到下方的打印语句
for循环
基本语法格式
for(表达式1;表达式2;表达式3){
循环体;
}
//表达式1: 用于初始化循环变量
//表达式2: 循环条件
//表达式3: 更新循环变量
注意 (
和
while
循环类似
)
- 和 if 类似, for 下面的语句可以不写 { } , 但是不写的时候只能支持一条语句. 建议还是加上 { }
- 和 if 类似, for 后面的 { 建议和 while 写在同一行.
- 和 if 类似, for 后面不要多写 分号, 否则可能导致循环不能正确执行
do-while循环
基本语法格式
do{
循环语句;
}while(循环条件);
先执行循环语句, 再判定循环条件
输入输出
输出到控制台
System.out.println(msg); // 输出一个字符串, 带换行
System.out.print(msg); // 输出一个字符串, 不带换行
System.out.printf(format, msg); // 格式化输出
从键盘输入
使用 Scanner 读取字符串/整数/浮点数
import java.util.Scanner; // 需要导入 util 包
Scanner sc = new Scanner(System.in);
System.out.println("请输入你的姓名:");
String name = sc.nextLine();
System.out.println("请输入你的年龄:");
int age = sc.nextInt();
System.out.println("你的信息如下:");
System.out.println("姓名: "+name+"\n"+"年龄:"+age+"\n");
sc.close();
使用 Scanner 循环读取 N 个数字
Scanner sc = new Scanner(System.in);
double sum = 0.0;
int num = 0;
//读取多个double类型的数据
while (sc.hasNextDouble()) {
double tmp = sc.nextDouble();
sum += tmp;
num++;
}
System.out.println("sum = " + sum);
System.out.println("avg = " + sum / num);
sc.close();
//输出
请输入数字:
16
56
89.9
^D
sum = 161.9
avg = 53.96666666666667