Java基础(顺序结构)学习笔记

Java基础

顺序结构

  • JAVA的基本结构就是顺序结构,除非特别指明,否则就按照顺序一句一句执行

  • 顺序结构是最简单的算法结构

  • 语句与语句之间,框与框之间是按从上到下的顺序进行的,它是由若干个一次执行的处理步骤组成的,它是任何一个算法都离不开的一种基本算法结构

选择结构

  • if单选择结构

    我们很多时候需要去判断一个东西是否可行,然后我们才去执行,这样一个过程在程序种用if语句来表示

    public class IfTest1 {
        public static void main(String[] args) {
                    /*
            if (条件布尔) {
                语句块; // 如果条件布尔为真, 语句块就执行, 否则不执行
            }*/
            Scanner scanner = new Scanner(System.in);
            System.out.println("请输入内容");
            String str = scanner.nextLine();
            //equals:判断字符串是否相等
            if(str.equals("hello")){
                System.out.println(str);
            }
            System.out.println("end");
            scanner.close();
        }
    }

  • if双选择结构

    需要有两个判断情况,创建双选择结构,使用if(){}else{}结构

    import java.util.Scanner;
    ​
    public class IfTest02 {
                /* 语句块1和语句块2之间是互斥, 只能必须执行某一个.
            if (条件布尔) {
                语句块1; // 如果条件为真执行1
            } else {
                语句块2; // 如果条件为假执行2
            }*/
        public static void main(String[] args) {
            //考试分数大于60分及格,小于60分为不及格
            Scanner scanner = new Scanner(System.in);
            System.out.println("请输入成绩");
            int score = scanner.nextInt();
            if(score > 60 ){ //设置score及格分数判断输入分数是否及格如果及格执行”成绩及格语句“否则else"成绩不及格"语句执行
                System.out.println("成绩及格"); 
            }else{
                System.out.println("成绩不及格");
            }
            scanner.close();
        }

  • if多选择结构

    我们发现双If的代码不符合实际情况,真是的情况还可能存在ABCD,存在区间多级判断。比如90-100是A,80-90是B,...等 所以我们需要一个多选择结构来处理这类问题

    import java.util.Scanner;
    ​
    public class IfTest04 {
        public static void main(String[] args) {
               /*
            if 语句至多有1个else 语句,else 语句在所有的else if 语句之后。
            if语句可以有若干个else if 语句, 它们必须在else语句之前。
            一旦其中一个else if语句检测为true,其他的else if 以及else 语句都将跳过执行。
             */
                /** 只能执行一个块
            if (条件布尔1) {
                语句块1; // 条件布尔1为真, 执行我
            } else if (条件布尔2) {
                语句块2; // 条件布尔1为假, 并且条件布尔2为真, 执行我
            } else if (条件布尔3) {
                语句块3; // 条件布尔1为假, 并且条件布尔2为假,  并且条件布尔3为真, 执行我
            } else if (条件布尔4) {
                语句块4; // 条件布尔1为假, 并且条件布尔2为假,  并且条件布尔3为假, 并且条件布尔4为真 执行我
            } else {
                语句块5 // 条件布尔1为假, 并且条件布尔2为假,  并且条件布尔3为假, 并且条件布尔4为假 执行我
            }
            */
            Scanner scanner = new Scanner(System.in);
            System.out.println("请输入成绩");
            int score = scanner.nextInt();
            if(score == 100){
                System.out.println("恭喜满分");
            }else if(score < 100 && score >= 90){
                System.out.println("A级");
            }else if (score < 90 && score >= 80) {
                System.out.println("B级");
            }else if (score < 80 && score >= 70) {
                System.out.println("C级");
            }else if (score < 70 && score >= 60) {
                System.out.println("d级");
            }else if (score < 60 && score >= 0 ){
                System.out.println("成绩不及格");
            }else{
                System.out.println("成绩不合法");
            }
            scanner.close();
        }
    }

  • 嵌套的if 结构

    使用嵌套的if...else语句是合法的。也就是说你可以在另一个if 或者else if 语句中使用if 或者else if语句。你可以像if语句一样嵌套else if ...else.

    public class IfTest05 {
        public static void main(String[] args) {
            int num1 = 57;
            int num2 = 388;
            int num3 = 544;
    ​
    ​
            if (num1 < num2) { //1<2
                if (num2 < num3) {  //1<2,2<3
                    System.out.println(num1 + "," + num2 + "," + num3);
                } else if (num1 < num3) {//1<2,3<2,1<3
                    System.out.println(num1 + "," + num3 + "," + num2);
                } else { //1<2,3<2,3<1
                    System.out.println(num3 + "," + num1 + "," + num2);
                }
            } else { //2<1
                if (num3 < num2) {
                    System.out.println(num3 + "," + num2 + "," + num1);
                } else if (num1 < num3) {//2<1,2<3,1<3
                    System.out.println(num2 + "," + num1 + "," + num3);
                } else {
                    System.out.println(num2 + "," + num3 + "," + num1);
                }
            }
        }
    }

  • switch多选择结构

    多选择结构还有一个实现方式就是switch case语句

    switch case 语句判断一个变量与一些列值中某个值是否相等,每个值称为一个分支。

    switch 语句中的变量类型可以是:

    • byte、short、int或者char

    • 从Java SE 7开始

    • switch 支持字符串String类型了

    • 同时case标签必须为字符串常量或者字面量

    public class SwitchTest {
        public static void main(String[] args) {
            
            /* 对变量中可能的值进行一个穷举, 列举. 可能的情况不会很多.
          switch (变量) { (必须是变量) 数据类型必须是非long整数, 字符串, 枚举.
             case 常量1 : case后面必须是常量(字面量或被final修饰的量) // if (变量 == 常量1)
                语句块1;
                break; // break的作用是破坏整个switch
             case 常量2 : // if (变量 == 常量2)
                语句块2;
                break;
             case 常量3 : // if (变量 == 常量3)
                语句块3;
                break;
             ........
             case 常量N : // if (变量 == 常量N)
                语句块N;
                break;
             default : // else
                语句块M;
                break;
          } */
            char grade = 'C';
    ​
            switch (grade){
                case'A':
                    System.out.println("good");
                    break;//如过不输入break破坏,case将会穿透
                case'B':
                    System.out.println("良好");
                    break;
                case'C':
                    System.out.println("及格");
                    break;
                case'D':
                    System.out.println("加油");
                    break;
                case'E':
                    System.out.println("挂科");
                    break;
                default:
                    System.out.println("输入错误");
            }
        }
    }
    package com.yangchaofan.day02.struct;
    ​
    public class SwitchTest2 {
        public static void main(String[] args) {
            String str = "元旦快乐";
                //- 从Java SE 7开始 switch 支持字符串String类型了
            //字符的本质还是数字
    ​
            //反编译 java ---class(字节码文件)----反编译(IDEA)  Ctrl+Shift+Alt+s
            switch (str){
                case"端午安康":
                    System.out.println("端午安康");
                    break;
                case"中秋快乐":
                    System.out.println("中秋快乐");
                    break;
                case"元旦快乐":
                    System.out.println("元旦快乐");
                    break;
                default:
                    System.out.println("非法输入");
            }
        }
    }

循环结构

  • while循环

    1. while是最基本的循环,他的结构为:

    2. 只要布尔表达为true,循环就会一致执行下去。

    3. 我们大多数情况会让循环停止下来,我们需要一个让表达式失效的 方式来结束循环。

    4. 少部分情况需要循环一直执行,比如服务器的请求响应监听等。

    5. 循环条件一直为true会造成无限循环【死循环】,我们整除的业务编程中应该尽量避免死循环,会影响程序性能或者造成程序崩溃。

      语法格式 ①初始化部分 while(②循环条件部分){ ③循环体部分; ④迭代部分; }

      执行过程: ①-②-③-④-②-③-④-②-③-④-...-②

      public class WhileTest3 {
          
          // 循环 : 在某种条件满足的情况下, 反复执行特定的代码的功能.
              
              // 4个组成部分
              // 1) 初始化语句, 作用是作准备工作.
              // 2) 循环条件部分, 作用是控制循环的生死
              // 3) 循环体部分, 被多次执行的代码
              // 4) 迭代部分, 作用是使循环趋于结束, 如果没有迭代, 循环是无限.
              
              
              // while 循环
              /*
              初始化语句
              while (循环条件) {
                  循环体;
                  迭代语句;
              }
              */
          public static void main(String[] args) {
              int i = 0;
              int sum = 0;
              while(i <= 100){// 循环次数: 条件右面的值 - 初值, 如果有=再加1
                  sum = sum + i;
                  i++;
              }
              System.out.println(sum);
          }
      }

  • do...while循环

    1. 对象while语句而言,如果不满足条件,则不能进入循环。但有时候我们需要即使不满足条件,也要至少执行一次。

    2. do...while循环和while循环相似,不同的是,do...while循环至少会执行一次。

    3. while和do...while的区别:

      while先判断后执行,do...while先执行后判断,即使条件不满足也会执行一次

      do...while总是抱着循环体会被至少执行一IC,这是他们的主要差别

      语法格式 ①初始化部分; do{ ③循环体部分 ④迭代部分 }while(②循环条件部分);

      执行过程: ①-③-④-②-③-④-②-③-④-...②

      **说明: do-while循环至少执行一次循环体。**

      public class DoWhileTest {
          /*
              do while 
              初始化语句 
              do {
                  循环体;
                  迭代语句;
              } while (循环条件);
              */
          
          public static void main(String[] args) {
              int i = 0;
              int sum = 0;
              do{
                  sum = sum + i;
                  i++;
              }while(i <= 100);
              System.out.println(sum);
          }
      }

For循环

  1. 虽然所有循环结构都可以用while或者do...while表示,但Java提供了另一种语句——for循环,使一些循环结构变得更加简单。

  2. for循环语句是支持迭代的一种通用结构,是最有效,最灵活的循环结构。

  3. for循环执行的次数是在执行前就确定的。

    语法格式 ①初始化部分; do{ ③循环体部分 ④迭代部分 }while(②循环条件部分);

    执行过程: ①-③-④-②-③-④-②-③-④-...②

    说明: do-while循环至少执行一次循环体。

//练习1.   1000内数取余5
public class ForWhileTest4 {
    public static void main(String[] args) {
        for (int i = 0; i <= 1000; i++) {
            if(i%5 == 0){
                System.out.print(i+"\t");
            }if(i%(5*3)==0){
                System.out.println();            
            }
        }
    }
}
public class WhileTest4 {
    public static void main(String[] args) {
       	int i = 0;
        while(i < 1000){
            if(i%5 == 0){
                System.out.print(i+"\t");
            }i++;
            if(i%(5*3)==0){
                System.out.println();
            }
        }
    }
}
//练习2 . 99乘法表
public class ForTest2 {
    public static void main(String[] args) {
        //1.我们先打印第一列
        //2.我们把固定的1再用一个循环包起来
        //3.去掉重复项,i<=j
        //4.调整样式
        for (int j = 1; j <= 9; j++) {
            for (int i = 1; i <= j; i++) {
            System.out.print(j + "*" + i + "=" + (j * i) + "\t");
        }System.out.println();
       }
    }
}
//练习三等腰三角形
public class ForTest3 {
    public static void main(String[] args) {
        for (int j = 0; j < 10; j++) {
             for (int i = 0; i < 9 - j; i++) {
                 System.out.print(" ");
        }
            for (int i = 0; i < 2  * j + 1; i++) {
                System.out.print("*");
            }
            System.out.println();
    }

}
}
public class TestTest {

    public static void main(String[] args) {
        //打印三角形 5行
        for (int i = 1; i <= 5; i++) {
            for (int j = 5; j >= i; j--) {
                System.out.print(" ");
            }
            for (int j = 1; j <= i; j++) {
                System.out.print("*");
            }
            for (int j = 1; j < i; j++) {
                System.out.print("*");
            }
            System.out.println();
        }
    }
}

增强For循环

1.重点使用于数组。

2.Java5引入了一种主要用于数组或集合的增强型for循环。

3.Java增强for循环语法格式如下:

for{声明语句:表达式
          代码句子
  }声明语句

4.声明语句:声明新的局部变量,该变量的类型必须和数组元素的类型匹配。其作用域限定在循环语句块,其值于此时数元素的值相等。

5.表达式:表达式是要访问的数组名,或者是返回值为数组的方法。

public class ForTest4 {
    public static void main(String[] args) {
        int[] numbers = {10,20,30,40,50,};//定义一个数组


        for(int i = 0;i < numbers.length;i++){
            System.out.println(numbers[i]);
        }
        System.out.println("****************************");
        for(int x : numbers){
            System.out.println(x);
        }
    }
}

break continue

1.break在任何循环语句的主体部分,均可用break控制循环的流程。break用于强行对出循环,不执行循环中的剩余的语句。(break语句也在switch语句中使用)

2.continue语句用在循环语句体中,用于终止某次循环过程,即跳过循环体中尚未执行的语句,接着进行下一次是否执行循环的判定

关于goto关键字

1.goto关键字很早就在程序设计语言中出现,监管goto仍是java的一个保留字,但并未在语言中得到正式使用;java没有goto,然而,在break和continue这两个关键字身上,我们仍然能看出一些goto的影子---带标签的break和continue。

2.“标签”是指后面跟一个冒号的标识符,例如:label:

3.对Java来说唯一用到标签的地方是在循环语句之前。而在循环之前设置标签的唯一理由就是:我们希望在其中嵌套另一个循环,由于break和continue关键字通常只终端当前循环,但若随同和标签使用,它们就会中断到存在标签的地方。

//break
public class BreakTest {
    public static void main(String[] args) {
        int i = 0;
        while (i < 100){
            i++;
            System.out.println(i);
            if(i==30){
                break;
            }
        }
        System.out.println("123");
    }
}//break用于强行对出循环,不执行循环中的剩余的语句
//continue语句
public class ContinueTest {
    public static void main(String[] args) {
        int i = 0;
        while (i < 100){
            i++;
            if(i%2 == 0){
                System.out.println();
                continue;
            }
            System.out.print(i);
        }
    }
}//continue语句用在循环语句体中,用于终止某次循环过程,即跳过循环体中尚未执行的语句,接着进行下一次是否执行循环的判定
//标签使用
public class LabelTest {
    public static void main(String[] args) {
        //打印101-150之间所有质数
        //质数是指在大于1的自然数,除了1和它本身以外不再有其他因数的自然数
​
        int count = 0;
​
        outer:for (int i = 101; i < 150; i++) {
            for (int j = 2; j < i / 2 ; j++) {
                if (i % j == 0) {
                    continue outer;
                }
            }
            System.out.print(i+ " ");
        }
    }
}
public class LoopTest {
    public static void main(String[] args) {
        //求1000以内所有质数的平均值
        int sum = 0; //求和
        int count = 0;//计数
        for (int i = 2; i < 1000; i++) {
            boolean flag = true;//假定i是质数
            //从2~i-1中任意找到一个反例,就可以推翻假设
            for(int j = 2; j < i;j++){
                if(i % j ==0){//测试某个值是否可以整除i
                    flag = false;//推翻假设
                }
            }
            if(flag){
                System.out.println(i);
                sum += i;
                count++;
            }

        }
        int avg = sum/count;
        System.out.println(avg);
    }
}

练习

public class Test2 {
    //求1000内质数的平均值
    public static void main(String[] args) {
        double sum = 0;
        int count = 0;
        for (int i = 2; i < 1000; i++) {
            boolean flag = true;
            for (int j = 2; j < i; j++) {
                if (i % j == 0) {
                    flag = false;
                }
            }
            if (flag) {
                System.out.println(i);
                sum += i;
                count++;
            }
        }
        System.out.println("avg = " + (sum / count));
    }
}
public class Test {
    public static void main(String[] args) {
        //打印空心三角形//
        for (int i = 0; i < 5; i++) {
            for (int j = 0; j < 5 - i - 1; j++) {
                System.out.print(" ");
            }
            for (int j = 0; j < 2 * i + 1; j++) {
                if (i == 0 || i == 5 - 1 || j == 0 || j == 2 * i) {
                    System.out.print("*");
                } else {
                    System.out.print(" ");
                }
            }
            System.out.println();
        }
    }
}
public class Test4 {
    //简易计算器
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        boolean flag = true;
        while (flag) {
            System.out.println("+");
            System.out.println("-");
            System.out.println("*");
            System.out.println("/");
            System.out.println("end");
            String str = scanner.next();
            switch (str) {
                case "+":
                    System.out.println("Enter the first number");
                    double a1 = scanner.nextDouble();
                    System.out.println("Enter the second number");
                    double b1 = scanner.nextDouble();
                    System.out.println("sum:" + add(a1, b1));
                    break;
                case "-":
                    System.out.println("Enter the first number");
                    double a2 = scanner.nextDouble();
                    System.out.println("Enter the second number");
                    double b2 = scanner.nextDouble();
                    System.out.println("sum:" + sub(a2, b2));
                    break;
                case "*":
                    System.out.println("Enter the first number");
                    double a3 = scanner.nextDouble();
                    System.out.println("Enter the second number");
                    double b3 = scanner.nextDouble();
                    System.out.println("sum:" + mul(a3, b3));
                    break;
                case "/":
                    System.out.println("Enter the first number");
                    double a4 = scanner.nextDouble();
                    System.out.println("Enter the second number");
                    double b4 = scanner.nextDouble();
                    System.out.println("sum:" + div(a4, b4));
                    break;
                case "end":
                    return;
                default:
                    break;
            }
        }
        scanner.close();
    }
    static double add(double a, double b) {
        return a + b;
    }
    static double sub(double a, double b) {
        return a - b;
    }
    static double mul(double a, double b) {
        return a * b;
    }
    static double div(double a, double b) {
        return a / b;
    }
}

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值