zoukankan      html  css  js  c++  java
  • java学习--基础知识第四天--笔记

    今日内容
    随机数Random类
    一维数组
    二维数组(二维数组的初始化、遍历)

    Random类
    作用:用来产生随机数

    使用步骤:
    (1)导包
    import java.util.Random;
    (2)创建对象
    Random r = new Random();
    (3)调用方法产生随机数
    int num = r.nextInt(100);// 产生随机整数,范围在[0,100),0~100之间,但是不包括100.

    需求:如何产生1~100之间的随机数?
    int num = r.nextInt(100)+1;
    如何产生0~100之间的随机数?
    int num = r.nextInt(100+1);
    如何产生n~100之间的随机数?
    int num = r.nextInt(100-n)+n;


    数组
    为什么需要数组?
    原来学习的变量,也是一个容器,但是它只能存储一个数据,如果有多个数据,这时就需要定义多个变量,但是变量太多就不方便,这时就需要数组。
    数组是可以存储多个同一数据类型数据的容器。

    定义格式:
    数据类型[] 数组名;
    int[] arr;

    数据类型 数组名[];
    int arr[];

    数组的特点:
    (1)数组是可以存储多个"同一数据类型"数据的容器,如果是可以转换为该类型的数据也是可以往里面存储的。
    (2)数组一经定义长度就固定
    (3)数组既可以存储基本数据类型的数据,也可以存储引用数据类型的数据
    (4)数组有整数索引(编号、角标、下标),从0开始的,最大索引为数组长度-1

    数组的初始化
    动态初始化:给定数组的长度,由系统赋于默认初始化值
    格式:
    数据类型[] 数组名 = new 数据类型[长度];
    int[] arr = new int[5];

    静态初始化:给定元素值,由系统计算数组的长度
    格式:
    数据类型[] 数组名 = new 数据类型[]{元素1,元素2,...};
    int[] arr = new int[]{1,2,3};

    简化格式:
    数据类型[] 数组名 = {元素1,元素2,...};
    int[] arr = {1,2,3};



    数组元素的访问
    格式:
    数组名[索引]

    获取
    int num = 数组名[索引];
    System.out.println(数组名[索引]);
    赋值
    数组名[索引] = 值;// arr[0] = 100;

    注意:数组直接打印都是看到内存地址值,不能看到数组中存储的元素,除了char[]之外

    Java中的内存分配
    栈:方法进栈,局部变量随着方法进入栈,先进后出
    堆:一切new出来的东西,数组,对象

    //后面的暂时不学
    方法区(第五天的方法中会学习)
    本地方法区(毕业班会学习)
    寄存器(Java不学习)

    数组元素的默认初始值
    基本数据类型
    整型(默认初始值都是0)
    byte short int long
    浮点型(默认初始值都是0.0)
    float double
    字符型(默认初始值为'u0000')
    char
    布尔型(默认初始值为false)
    boolean
    引用数据类型(默认初始值都是null)

    数组的两个小问题
    索引越界异常:ArrayIndexOutOfBoundsException
    发生的原因:因为数组的索引的范围在0~数组的长度-1,如果访问了这个范围之外的索引,就会发生该异常
    空指针异常:NullPointerException
    发生的原因:数组名不再记录任何数组的内存地址,然后还想通过数组名去访问该数组对应的那片空间

    数组的常见操作
    遍历(正向和反向遍历)、求最值(最大值和最小值)、反转、排序(冒泡排序、选择排序)

    遍历(正向和反向遍历)
    属性:length

    int[] arr = {1,2,3,4};
    for(int i=0;i<arr.length;i++){// 0~长度-1
    System.out.println(arr[i]);
    }
    for(int i=arr.length-1;i>=0;i--){
    System.out.println(arr[i]);
    }

    求最值(最大值和最小值)
    int max=arr[0];
    if(max<arr[i]){
    max=arr[i];
    }

    int min=arr[i];
    if(min>arr[i]){
    min=arr[i];
    }

    反转:
    for(int start=0,end=arr.length-1;start<end;start++,end--){
    int temp =arr[start];
    arr[start]=arr[end];
    arr[end]=temp;
    }

    查找:
    for(int i=0;i<arr.length;i++){
    if(number==arr[i]){
    System.out.println(i);
    }
    }

    排序(冒泡排序、选择排序)
    选择排序:
    for (int i = 0; i < arr.length-1; i++) {
    for (int j = i+1; j < arr.length; j++) {
    // System.out.print(i+"-"+j+" ");
    if (arr[i] > arr[j]) {
    int temp = arr[i];
    arr[i] = arr[j];
    arr[j] = temp;
    }
    }
    // System.out.println();
    }
    冒泡排序:
    for (int i = 0; i < arr.length-1; i++) {
    for (int j = 0; j < arr.length-1-i; j++) {
    if (arr[j] > arr[j+1]) {
    int temp = arr[j];
    arr[j] = arr[j+1];
    arr[j+1] = temp;
    }
    }
    }



    二维数组
    初始化
    动态初始化
    格式:
    数据类型[][] 数组名 = new 数据类型[二维数组的长度][一维数组的长度];
    int[][] arr = new int[3][2];

    数据类型[][] 数组名 = new 数据类型[二维数组的长度][];
    int[][] arr = new int[3][];
    静态初始化
    数据类型[][] 数组名 = new 数据类型[][]{{元素1,元素2,...},{},{},...};
    int[][] arr = new int[][]{{1,2},{3,4,5},{6,7,8,9}};

    数据类型[][] 数组名 = {{元素1,元素2,...},{},{},...};
    int[][] arr = {{1,2},{3,4,5},{6,7,8,9}};

    遍历

  • 相关阅读:
    vue点击元素变色兄弟元素不变色
    获取今天昨天本月的时间段
    java.io.InputStream -- 1.8 初识,应用场景待更新
    java.io.FilterInputStream
    java.io.FileInputStream
    java.io.ByteArrayInputStream -- 1.8
    JavaBeans -- 1.8
    mysql 导出和导入数据
    tp5 数据库迁移工具 migrate&seed
    tp5模型一对一关联hasOne
  • 原文地址:https://www.cnblogs.com/bigorangehasc/p/8638916.html
Copyright © 2011-2022 走看看