day 9:大项目语言复习下 | 青训营笔记

32 阅读4分钟

这是我参与「第五届青训营 」伴学笔记创作活动的第 9 天

3 流程控制语句

1 分支结构

  1. if else 很简单,不多表述,与c相同

    1. if(heartBeats < 60 || heartBeats > 100){
                   System.out.println("你需要做进一步的检查");
               }
      
  2. switch case

执行完此case的执行语句以后。

  • 情况1:如果遇到break,则执行break并跳出当前的switch-case结构
  •   情况2:如果没有遇到break,则会继续执行当前case之后的其它case中的执行语句。--->case穿透 ... 直·到遇到break关键字或执行完所有的case及default的执行语句,跳出当前的switch-case结构
    • switch(表达式)中表达式的值必须是下述几种类型之一:byte,short,char,int,枚举 (jdk 5.0),String (jdk 7.0);
    • case子句中的值必须是常量,不能是变量名或不确定的表达式值或范围;
    • 同一个switch语句,所有case子句中的常量值互不相同;
    • break语句用来在执行完一个case分支后使程序跳出switch语句块;
    • 如果没有break,程序会顺序执行到switch结尾。default子句是可选的。同时,位置也是灵活的。当没有匹配的case时,执行default语句。
  • int num = 1;
    switch(num){
                case 0:
                   System.out.println("zero");
                   break;
                case 1:
                   System.out.println("one");
                   break;
                case 2:
                   System.out.println("two");
                   break;
                case 3:
                   System.out.println("three");
                   break;
                default:
                   System.out.println("other");
                   //break;
            }
    

2 循环结构

三种循环结构:for、while、do-while

  1. for循环 和c没有区别

  2. while和c没有区别

    1. // 猜随机数
      public class GuessNumber {
           public static void main(String[] args) {
               //获取一个随机数
               int random = (int) (Math.random() * 100) + 1;
      
               //记录猜的次数
               int count = 1;
      
               //实例化Scanner
               Scanner scan = new Scanner(System.in);
               System.out.println("请输入一个整数(1-100):");
               int guess = scan.nextInt();
      
               while (guess != random) {
      
                   if (guess > random) {
                       System.out.println("猜大了");
                   } else if (guess < random) {
                       System.out.println("猜小了");
                   }
      
                   System.out.println("请输入一个整数(1-100):");
                   guess = scan.nextInt();
                  //累加猜的次数
                   count++;
      
               }
               System.out.println("猜中了!");
               System.out.println("一共猜了" + count + "次");
           }
       }
      
  3. Do-while 循环至少执行一次

  • 遍历有明显的循环次数(范围)的需求,选择for循环
  • 遍历没有明显的循环次数(范围)的需求,选择while循环
  • 如果循环体语句块至少执行一次,可以考虑使用do-while循环
  • 本质上:三种循环之间完全可以互相转换,都能实现循环的功能

3 Scanner:键盘输入功能的实现

  1. 导包:import java.util.Scanner;
  2. 创建Scanner类型的对象:Scanner scan = new Scanner(System.in);
  3. 调用Scanner类的相关方法(next() / nextXxx()),来获取指定类型的变量
  4. 释放资源:scan.close();
Scanner scanner = new Scanner(System.in);//System.in默认代表键盘输入

//③根据提示,调用Scanner的方法,获取不同类型的变量
System.out.println("欢迎光临你好我好交友网站!");
System.out.print("请输入你的网名:");
String name = scanner.next();

System.out.print("请输入你的年龄:");
int age = scanner.nextInt();

System.out.print("请输入你的体重:");
double weight = scanner.nextDouble();

System.out.print("你是否单身(true/false):");
boolean isSingle = scanner.nextBoolean();

scanner.close();

4 获取随机数

Math.random() // 获取0.0到1.0的double

4 数组

1 数组的特点

  1. 数组是一个引用数据类型,其中的元素可以是任何数据类型。
  2. 创建数组对象会在内存中开辟一整块连续的空间。占据的空间的大小,取决于数组的长度和数组中元素的类型。
  3. 数组中的元素在内存中是依次紧密排列的,有序的。
  4. 数组,一旦初始化完成,其长度就是确定的。数组的长度一旦确定,就不能修改。
  5. 我们可以直接通过下标(或索引)的方式调用指定位置的元素,速度很快。
  6. 数组名中引用的是这块连续空间的首地址。

2 数组的使用

2.1 数组的声明与初始化简单使用

这个数组不语言一样,c语言通常将声明和初始化放到一起,java中更喜欢分开,声明是声明,初始化要new一下


// 声明和初始化
// 静态初始化
double[] prices;
prices= new double[]{1.0,2,3};
// 动态初始化
String[] foods= new String[5];
int[] arr1={1,2,3} //类型推断

// 获取长度
foods.length

默认的初始化值

3 数组的内存解析

为了提高运算效率,就对空间进行了不同区域的划分,因为每一片区域都有特定的处理数据方式和内存管理方式。

jvm运行时内存环境划分为5个区域:程序计数器,虚拟机栈,本地方法栈,堆,方法区。

与数组内存相关的内存结构解释虚拟机栈以及堆

虚拟机栈:用于存放声明的变量

堆:用于存放数组的实体,即所有元素

举例

4 二维数组

  1. 初始化

    1. // 静态初始化 String [][] b= new String[][]{{"1","sdfws"},{"sfsf","sfwe","SS"}}; // 第二维长度可以不一样

      // 动态初始化

      String [][] c=new String[2][];

      //真正用的时候还要new c[0]= new String[5]

      String [][] c=new String[][3];

  2. 内存解析

5 Arrays工具类

位置 java.utils.Arrays

Arrays.equals(arr1,arr2) // 两个数组元素是否相同 Arrays.toString(arr1) //转为string Arrays.fill(arr1,10) //每个元素变为10 Arrays.sort(arr1) // 快排 Arrays。binarySearch(arr3,15) //二分查找