day04
条件判断语句
if
if(表达式){
语句体;
}
if的注意事项
1.大括号建议跟在第一行末尾
if(表达式){
语句体;
}
//而不建议
if(表达式)
{ //第二行
语句体;
}
2.语句体只有一句时,大括号省略不写(还是建议写)
if(表达式)
语句体;
3.对布尔类型变量判断时不要用==,变量直接放在小括号中
boolean flag =true;
if(flag){
语句体;
}
//而不是
boolean flag=true;
if(flag==true){
语句体;
}
if-else
if(表达式){
语句体;
}else{
}
if-else if-else
if (表达式){
语句体;
} else if (表达式) {
语句体;
}else {
语句体;
}
switch语句
switch (表达式要有具体的值) {
case "1":
System.out.println("1");
break;
case "2":
System.out.println("2");
break;
case "3":
System.out.println("3");
break;
}
}
default的位置与省略
- 位置:default不一定是写在最下面的,我们可以写在任意位置。只不过习惯会写在最下面
- 省略:default可以省略,语法不会有问题,但是不建议省略。
case穿透
当case匹配上后,代码会运行到break,或整个switch语句的右括号为止,我们把这种现象称为case穿透
public class Main {
public static void main(String[] args) {
switch ("2") {
case "1":
System.out.println("1");
break;
case "2":
System.out.println("2");
//break;
case "3":
System.out.println("3");
// break;
}
//此时代码因为没有匹配上break,故一直运行到右括号为止
}
}
控制台输出如下:
2
3
进程已结束,退出代码为 0
switch新特性 (jdk12)
public class Main {
public static void main(String[] args) {
switch ("2") {
case"1"->{
System.out.println('1');
}
case"2"->{
System.out.println('2');
}
case"3"->System.out.println('3');
//当只有一行代码时{}括号可以省
}
}
}
即最简单的写法为
case"3"->System.out.println('3');
//当只有一行代码时{}括号可以省
关于case穿透的小练习
class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int i = sc.nextInt();
System.out.println("输入具体的星期");
switch (i) {
case 1:
case 2:
case 3:
case 4:
case 5:
System.out.println("工作日");
break;
case 6,7:
System.out.println("休息日");
break;
/*请注意case 6,7:表达式;
是case 6:
case 7:
的简化写法
*/
}
}
}
switch和if语句的使用情况
范围: if
一一列举: switch
循环结构
for(初始化语句;条件判断语句;条件控制语句){
循环体语句;
}
也就是说执行逻辑为初始化语句-> 条件判断语句->
循环体语句->条件控制语句-> 条件判断语句->循环体语句->条件控制语句 -> 条件判断语句…
累加
将变量定义在for大括号里面时,每次循环结束后,变量会从内存中消失,每次新的循环开始相当于定义了一个新的变量,所以累加时把变量定义在for循环外
class Main {
public static void main(String[] args) {
for (int i = 0; i < 5; i++) {
System.out.println("此时的i"+'\t' + i);
int temp = 0;
System.out.println("此时的temp" + '\t'+temp);
temp += i;
System.out.println("计算后的temp" +'\t'+ temp);
//每次新的循环开始后temp(每次循环都为0),会和i相加,计算后的temp始终为0+i
}
}
}
控制台代码如下:
此时的i 0
此时的temp 0
计算后的temp 0
此时的i 1
此时的temp 0
计算后的temp 1
此时的i 2
此时的temp 0
计算后的temp 2
此时的i 3
此时的temp 0
计算后的temp 3
此时的i 4
此时的temp 0
计算后的temp 4
进程已结束,退出代码为 0
while
初始化语句;
while(条件判断语句){
循环体语句;
条件控制语句;
}
do while
初始化语句;
do {
循环体控制语句;
条件控制语句;
} while (条件判断语句);
for和while的区别
for循环中:知道循环的次数或者循环的范围
while循环:不知道循环的 次数 和 范围,只知道循环的结束条件。