选择结构
if语句:
- 当条件表达式为
true时,就是会执行{}代码,如果为false,就不会执行语法
if (表达式) {如果表达式为 true 时执行的代码}
实例
int a=0;if (a==1){System.out.println(a);
if else语句:
if else语句: 当
条件表达式为true时,执行代码1,如果为false,执行代码2语法
if (条件) {条件为 true 时执行的代码块(执行代码1)} else {条件为 false 时执行的代码块(执行代码2)}
实例
if(a==0){System.out.println(1);}else {System.out.println(3);}
if-else-if语句
if 语句至多有
1 个 else 语句,else 语句在所有的 else if 语句之后。- if 语句可以有若干个 else if 语句,它们必须在 else 语句之前。
- 一旦其中一个 else if 语句检测为 true,其他的 else if 以及 else 语句都将跳过执行
语法
if (条件 1) {条件 1 为 true 时执行的代码块} else if (条件 2) {条件 1 为 false 而条件 2 为 true 时执行的代码块} else {条件 1 和条件 2 同时为 false 时执行的代码块}
实例
```java if (time < 10) { greeting = “Good morning”; } else if (time < 18) { greeting = “Good day”; } else { greeting = “Good evening”; }
//90-100 优秀 80-89 好 70-79 良 60-69 及格 60以下 不及格 public static void main(String[] args) { int score = 100; if(score<0 || score>100){ System.out.println(“你的成绩是错误的”); }else if(score>=90 && score<=100){ System.out.println(“你的成绩属于优秀”); }else if(score>=80 && score<90){ System.out.println("你的成绩属于好"); }else if(score>=70 && score<80){ System.out.println("你的成绩属于良"); }else if(score>=60 && score<70){ System.out.println(“你的成绩属于及格”); }else { System.out.println(“你的成绩属于不及格”); } }}
<a name="fVnyF"></a>###<a name="kH7Kg"></a>## 嵌套的 if…else 语句- 使用嵌套的 if…else 语句是合法的。也就是说你可以在另一个 if 或者 else if 语句中使用 if 或者 else if 语句<a name="Nl2jU"></a>#### 语法```javaif(布尔表达式 1){////如果布尔表达式 1的值为true执行代码if(布尔表达式 2){////如果布尔表达式 2的值为true执行代码}}
实例
public class Test {public static void main(String args[]){int x = 30;int y = 10;if( x == 30 ){if( y == 10 ){System.out.print("X = 30 and Y = 10");}}}}
switch语句:
switch:条件成立执行分支,条件不成立继续向下判断分支,如果分支都不满足,则执行default语句块
支持类型:int、byte、short、String字符串、枚举类型。
注意点:
- 每个语句后面必须加break,
防止case穿透 - default语句必须放到最后
语法
switch (表达式) {case 常量表达式或枚举常量:语句;break;case 常量表达式或枚举常量:语句;break;......default: 语句;break;}
实例
switch (a){case 1 :System.out.println("第一名");break;case 2:System.out.println("第二名");break;case 3:System.out.println("第三名");break;default:System.out.println("没有名次");}
总结:
- if -else: 二选一
- if-else-if:范围多选一
-
循环语句:
while语句:
先判断
条件表达式是否成立,再执行语句块,如果不成立则跳过语句块,执行后面的语句语法
初始化值while (表达式){语句块变量自增(自减);}
实例
public class TestWhile{public static void main(String[] args){//功能:1+2+3+4+5//1.定义变量:int num = 1;//条件初始化//2.定义一个求和变量,用来接收和:int sum = 0;while(num<=5){//条件判断sum += num;//循环体num++;//迭代}//3.输出和System.out.println(sum);}}
- 将部分代码重复执行
- 循环四要素:条件初始化、条件判断、循环体、迭代(初始化谁就判断谁,判断谁就迭代谁)
do while语句:
先执行循环中的语句块,然后在判断while中的表达式,如果成立再次执行,如果不成立跳出循环,执行后面的语句,do-while循环的循环体至少执行一次
语法
初始化值do {语句块变量自增(自减);}while (表达式);
实例
public class Test {public static void main(String[] args) {//while循环:先判断再执行int a = 0;while (a < 0) {System.out.println(a);a++;}System.out.println("-----");//do-while循环:先执行再判断a = 0;do {System.out.println(a);a++;} while (a < 0);}}
while和do-while的区别:
- while: 先判断,再执行
- do-while: 先执行,再判断—-》至少被执行一次,从第二次开始才进行判断
for语句:
先判断初始化值``(循环变量),第二步判断循环条件会否成立,第三步执行语句块,第四部循环变量自增,如果判断循环条件不成立,则直接跳出循环
语法
for (初始化值;循环条件;变量自增(自减);){语句块;}
实例
public class ForDemo01 {public static void main(String[] args) {//初始化 条件判断 迭代for (int i = 0; i < 100; i++) {System.out.println(i);}System.out.println("for循环结果");}}
习题题💋
public class ForDemo02 {public static void main(String[] args) {//计算0到100直接的奇数和,偶数和int oddSum = 0;int evenSum = 0;for (int i = 0; i <=100; i++) {if (i%2!=0){//基数oddSum =oddSum +i;}else {evenSum = evenSum +i;}}System.out.println("基数和"+oddSum);System.out.println("偶数和"+evenSum);}}
for语句增强版:
常用于数组遍历打印
int stu[]={1,2,4,87,7,6,6,21,2,7,7,445,8,8};for (int i : stu) {System.out.print(i+" ");}
- 优点:代码少
- 缺点:不能直接获取索引
循环嵌套:
所有循环体中可以嵌套另外任意一个其他循环体,外层循环执行一遍,内层循环执行一个完整循环。
99乘法表打印:
for (int i=1;i<=9;i++){for (int j=1;j<=i;j++){System.out.print(j+"*"+i+"="+i*j+"\t");}System.out.println();}
public class Demo17LoopHourAndMinute {public static void main(String[] args) {for (int hour = 0; hour < 24; hour++) { // 外层控制小时for (int minute = 0; minute < 60; minute++) { // 内层控制小时之内的分钟System.out.println(hour + "点" + minute + "分");}}}}
死循环
永远停不下来的循环,叫做死循环
死循环的标准格式:
while (true) {循环体}
public class Demo16DeadLoop {public static void main(String[] args) {while (true) {System.out.println("I Love Java!");}// System.out.println("Hello");}}
三种循环的区别
如果条件判断从来没有满足过,那么for循环和while循环将会执行0次,但是do-while循环会执行至少一次。
2.for循环的变量在小括号当中定义,只有循环内部才可以使用。while循环和do-while循环初始化语句本来就在外面,所以出来循环之后还可以继续使用。public class Demo13LoopDifference {public static void main(String[] args) {for (int i = 1; i < 0; i++) {System.out.println("Hello");}// System.out.println(i); // 这一行是错误写法!因为变量i定义在for循环小括号内,只有for循环自己才能用。System.out.println("================");int i = 1;do {System.out.println("World");i++;} while (i < 0);// 现在已经超出了do-while循环的范围,我们仍然可以使用变量iSystem.out.println(i); // 2}}
跳出语句:
break语句:
如果在循环体中加入break语句则结束本次循环
break关键字的用法有常见的两种:
- 可以用在switch语句当中,一旦执行,整个switch语句立刻结束。
- 还可以用在循环语句当中,一旦执行,整个循环语句立刻结束。打断循环。
关于循环的选择,有一个小建议:凡是次数确定的场景多用for循环;否则多用while循环
public class Demo14Break {public static void main(String[] args) {for (int i = 1; i <= 10; i++) {// 如果希望从第4次开始,后续全都不要了,就要打断循环if (i == 4) { // 如果当前是第4次break; // 那么就打断整个循环}System.out.println("Hello" + i);}}}
如果循环嵌套中需要让内层循环中的break控制到外层循环,可以给循环加一个标识符,从而达到控制外层循环的效果。
outer: for(int i=0;i<10;i++){inner: for(int j=1;j<=10;j++){if(j>=5){break outer;}}}
continue语句:
一旦执行,立刻跳过当前次循环剩余内容,马上开始下一次循环
如果在for循环体中用continue语句结束本次循环,需要把循环控制条件自减一位。
for (int i = 1; i <= 5; i++) {System.out.print("请输入第" + i + "个学生的成绩:");double x = input.nextDouble();if (x < 0 || x > 100) {System.out.println("成绩不合法,请重新输入");i--;continue;}sum = sum + x;}
return语句:
结束当前方法,如果是调用,则返回调用该方法的语句处
