选择结构

if语句:

  • 当条件表达式为true时,就是会执行{}代码,如果为false,就不会执行

    语法

    1. if (表达式) {
    2. 如果表达式为 true 时执行的代码
    3. }

    实例

    1. int a=0;
    2. if (a==1){
    3. System.out.println(a);

if else语句:

  • if else语句: 当条件表达式true时,执行代码1,如果为false,执行代码2

    语法

    1. if (条件) {
    2. 条件为 true 时执行的代码块(执行代码1
    3. } else {
    4. 条件为 false 时执行的代码块(执行代码2
    5. }

    实例

    1. if(a==0){
    2. System.out.println(1);
    3. }else {
    4. System.out.println(3);
    5. }

    if-else-if语句

  • if 语句至多有 1 个 else 语句,else 语句在所有的 else if 语句之后。

  • if 语句可以有若干个 else if 语句,它们必须在 else 语句之前。
  • 一旦其中一个 else if 语句检测为 true,其他的 else if 以及 else 语句都将跳过执行

    语法

    1. if (条件 1) {
    2. 条件 1 true 时执行的代码块
    3. } else if (条件 2) {
    4. 条件 1 false 而条件 2 true 时执行的代码块
    5. } else {
    6. 条件 1 和条件 2 同时为 false 时执行的代码块
    7. }

    实例

    ```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(“你的成绩属于不及格”); } }}

  1. <a name="fVnyF"></a>
  2. ###
  3. <a name="kH7Kg"></a>
  4. ## 嵌套的 if…else 语句
  5. - 使用嵌套的 if…else 语句是合法的。也就是说你可以在另一个 if 或者 else if 语句中使用 if 或者 else if 语句
  6. <a name="Nl2jU"></a>
  7. #### 语法
  8. ```java
  9. if(布尔表达式 1){
  10. ////如果布尔表达式 1的值为true执行代码
  11. if(布尔表达式 2){
  12. ////如果布尔表达式 2的值为true执行代码
  13. }
  14. }

实例

  1. public class Test {
  2. public static void main(String args[]){
  3. int x = 30;
  4. int y = 10;
  5. if( x == 30 ){
  6. if( y == 10 ){
  7. System.out.print("X = 30 and Y = 10");
  8. }
  9. }
  10. }
  11. }

switch语句:

switch:条件成立执行分支,条件不成立继续向下判断分支,如果分支都不满足,则执行default语句块
支持类型:intbyteshortString字符串枚举类型
注意点:

  • 每个语句后面必须加break,防止case穿透
  • default语句必须放到最后

语法

  1. switch (表达式) {
  2. case 常量表达式或枚举常量:
  3. 语句;
  4. break;
  5. case 常量表达式或枚举常量:
  6. 语句;
  7. break;
  8. ......
  9. default: 语句;
  10. break;
  11. }

实例

  1. switch (a){
  2. case 1 :
  3. System.out.println("第一名");
  4. break;
  5. case 2:
  6. System.out.println("第二名");
  7. break;
  8. case 3:
  9. System.out.println("第三名");
  10. break;
  11. default:
  12. System.out.println("没有名次");
  13. }

总结:

  • if -else: 二选一
  • if-else-if:范围多选一
  • switch:定值多选一

    循环语句:

    while语句:

    先判断条件表达式是否成立,再执行语句块,如果不成立则跳过语句块,执行后面的语句

    语法

    1. 初始化值
    2. while (表达式){
    3. 语句块
    4. 变量自增(自减);
    5. }

    实例

    1. public class TestWhile{
    2. public static void main(String[] args){
    3. //功能:1+2+3+4+5
    4. //1.定义变量:
    5. int num = 1;//条件初始化
    6. //2.定义一个求和变量,用来接收和:
    7. int sum = 0;
    8. while(num<=5){//条件判断
    9. sum += num;//循环体
    10. num++;//迭代
    11. }
    12. //3.输出和
    13. System.out.println(sum);
    14. }
    15. }
    • 将部分代码重复执行
    • 循环四要素:条件初始化、条件判断、循环体、迭代(初始化谁就判断谁,判断谁就迭代谁)

do while语句:

执行循环中的语句块,然后在判断while中的表达式,如果成立再次执行,如果不成立跳出循环,执行后面的语句,do-while循环的循环体至少执行一次

语法

  1. 初始化值
  2. do {
  3. 语句块
  4. 变量自增(自减);
  5. }while (表达式);

实例

  1. public class Test {
  2. public static void main(String[] args) {
  3. //while循环:先判断再执行
  4. int a = 0;
  5. while (a < 0) {
  6. System.out.println(a);
  7. a++;
  8. }
  9. System.out.println("-----");
  10. //do-while循环:先执行再判断
  11. a = 0;
  12. do {
  13. System.out.println(a);
  14. a++;
  15. } while (a < 0);
  16. }
  17. }

while和do-while的区别:

  • while: 先判断,再执行
  • do-while: 先执行,再判断—-》至少被执行一次,从第二次开始才进行判断

for语句:

先判断初始化值``(循环变量),第二步判断循环条件会否成立,第三步执行语句块,第四部循环变量自增,如果判断循环条件不成立,则直接跳出循环

语法

  1. for (初始化值;循环条件;变量自增(自减);){
  2. 语句块;
  3. }

实例

  1. public class ForDemo01 {
  2. public static void main(String[] args) {
  3. //初始化 条件判断 迭代
  4. for (int i = 0; i < 100; i++) {
  5. System.out.println(i);
  6. }
  7. System.out.println("for循环结果");
  8. }
  9. }

习题题💋

  1. public class ForDemo02 {
  2. public static void main(String[] args) {
  3. //计算0到100直接的奇数和,偶数和
  4. int oddSum = 0;
  5. int evenSum = 0;
  6. for (int i = 0; i <=100; i++) {
  7. if (i%2!=0){//基数
  8. oddSum =oddSum +i;
  9. }else {
  10. evenSum = evenSum +i;
  11. }
  12. }
  13. System.out.println("基数和"+oddSum);
  14. System.out.println("偶数和"+evenSum);
  15. }
  16. }

for语句增强版:

常用于数组遍历打印

  1. int stu[]={1,2,4,87,7,6,6,21,2,7,7,445,8,8};
  2. for (int i : stu) {
  3. System.out.print(i+" ");
  4. }
  • 优点:代码少
  • 缺点:不能直接获取索引

循环嵌套:

所有循环体中可以嵌套另外任意一个其他循环体,外层循环执行一遍,内层循环执行一个完整循环。
99乘法表打印:

  1. for (int i=1;i<=9;i++){
  2. for (int j=1;j<=i;j++){
  3. System.out.print(j+"*"+i+"="+i*j+"\t");
  4. }
  5. System.out.println();
  6. }
  1. public class Demo17LoopHourAndMinute {
  2. public static void main(String[] args) {
  3. for (int hour = 0; hour < 24; hour++) { // 外层控制小时
  4. for (int minute = 0; minute < 60; minute++) { // 内层控制小时之内的分钟
  5. System.out.println(hour + "点" + minute + "分");
  6. }
  7. }
  8. }
  9. }

死循环

永远停不下来的循环,叫做死循环
死循环的标准格式:

  1. while (true) {
  2. 循环体
  3. }
  1. public class Demo16DeadLoop {
  2. public static void main(String[] args) {
  3. while (true) {
  4. System.out.println("I Love Java!");
  5. }
  6. // System.out.println("Hello");
  7. }
  8. }

三种循环的区别

  1. 如果条件判断从来没有满足过,那么for循环和while循环将会执行0次,但是do-while循环会执行至少一次。
    2. for循环的变量在小括号当中定义,只有循环内部才可以使用。while循环和do-while循环初始化语句本来就在外面,所以出来循环之后还可以继续使用。

    1. public class Demo13LoopDifference {
    2. public static void main(String[] args) {
    3. for (int i = 1; i < 0; i++) {
    4. System.out.println("Hello");
    5. }
    6. // System.out.println(i); // 这一行是错误写法!因为变量i定义在for循环小括号内,只有for循环自己才能用。
    7. System.out.println("================");
    8. int i = 1;
    9. do {
    10. System.out.println("World");
    11. i++;
    12. } while (i < 0);
    13. // 现在已经超出了do-while循环的范围,我们仍然可以使用变量i
    14. System.out.println(i); // 2
    15. }
    16. }

    跳出语句:

    break语句:

    如果在循环体中加入break语句则结束本次循环

break关键字的用法有常见的两种:

  • 可以用在switch语句当中,一旦执行,整个switch语句立刻结束。
  • 还可以用在循环语句当中,一旦执行,整个循环语句立刻结束。打断循环。

关于循环的选择,有一个小建议:凡是次数确定的场景多用for循环;否则多用while循环

  1. public class Demo14Break {
  2. public static void main(String[] args) {
  3. for (int i = 1; i <= 10; i++) {
  4. // 如果希望从第4次开始,后续全都不要了,就要打断循环
  5. if (i == 4) { // 如果当前是第4次
  6. break; // 那么就打断整个循环
  7. }
  8. System.out.println("Hello" + i);
  9. }
  10. }
  11. }

如果循环嵌套中需要让内层循环中的break控制到外层循环,可以给循环加一个标识符,从而达到控制外层循环的效果。

  1. outer: for(int i=0;i<10;i++){
  2. inner: for(int j=1;j<=10;j++){
  3. if(j>=5){
  4. break outer;
  5. }
  6. }
  7. }

continue语句:

一旦执行,立刻跳过当前次循环剩余内容,马上开始下一次循环
如果在for循环体中用continue语句结束本次循环,需要把循环控制条件自减一位。

  1. for (int i = 1; i <= 5; i++) {
  2. System.out.print("请输入第" + i + "个学生的成绩:");
  3. double x = input.nextDouble();
  4. if (x < 0 || x > 100) {
  5. System.out.println("成绩不合法,请重新输入");
  6. i--;
  7. continue;
  8. }
  9. sum = sum + x;
  10. }

return语句:

结束当前方法,如果是调用,则返回调用该方法的语句处