Java笔记 Day 8— 数组、排序、多维数组—二维数组

本文详细介绍了Java中的数组概念及其三种定义方式,包括直接定义、先声明后创建和静态初始化。接着讲解了排序的基本原理,特别提到了冒泡排序法。然后深入探讨了二维数组的定义、使用和内存存储形式,包括动态和静态初始化方法。最后,总结了数组的使用细节和注意事项,如数组长度、下标范围和赋值机制。
摘要由CSDN通过智能技术生成

十五、数组、排序、多维数组—二维数组

15.1、数组

数组介绍

数组可以存放多个 同一类型的数据。数组也是一种数据类型,是引用类型。[数(数据)组(一组)就是一组数据]

//1.double[] 表示 是double类型的数组 , 数组名 hens
//2.{3, 5, 1, 3.4, 2, 50} 表示数组的值/元素,依次表示数组的第几个元素
double[] hens = {3, 5, 1, 3.4, 2, 50};
//可以通过 hens[下标]来访问数组的元素

可以通过 数组名.length得到数组的大小/长度。

数组使用方式1--------直接定义
  • 定义:

    数据类型 数组名[] = new 数据类型[大小] (或者:数据类型[] 数组名 = new 数据类型[大小])

    int a[] = new int[5]   // 创建了一个数组,名字a,存放5个int
    
  • 引用/访问/获取

    数组名[下标/索引] 比如:a数组的第3个数,a[2]

数组使用方式2--------先声明,再创建
  • 先声明数组

    语法:数据类型 数组名[]; 也可以 数据类型[] 数组名;

    int a[]; 或者 int[] a;
    
  • 创建数据

    语法:数组名 = new 数据类型[大小];

    	a = new int[10];
    
数组使用方式3--------静态初始化
  • 初始化数组

    语法:数据类型 数组名[] = {元素值,元素值…}

    int a[] = {2,5,6,7,8,89,90,56}
    //如果知道数组有多少元素,具体上面的用法相当于:
    int a[] = new int[9];
    a[0] = 2;
    a[1] = 5;
    a[3] =7;
    ...
    
数组使用细节
  1. 数组是多个相同类型数据的集合,实现对这些数据的统一管理
  2. 数组中的元素可以是任何数据类型,包括基本类型和引用类型,但是不能混用。
  3. 数组创建后,如果没有赋值,则有默认值。(int 0,short 0,byte 0, long 0,float 0.0,double 0.0,char \u000,boolean false,String null)
  4. 使用数组的步骤:1)声明数组并开辟空间 2)给数组各个元素赋值 3)使用数组
  5. 数组的下标是从0开始的
  6. 数组下标必须在指定的范围内使用,否则会出现 下标越界异常
  7. 数组属于引用类型,数组型数据是对象
数组赋值机制
  1. 基本数据类型赋值,这个值就是具体的数据,赋值方式为值拷贝,而且互不影响

  2. 数组在默认情况下是引用传递,赋的值是地址,赋值方式为引用赋值,是一个地址。

    int[] arr1 = {1,2,3};
    int[] arr2 = arr1;//把arr1的值赋给arr2
    

数组赋值

15.2、排序

排序介绍
  • 排序是将一群数据,依照指定的顺序进行排列的过程

  • 排序的分类

    • 内部排列

      指将需要处理的所有数据都加载到内部存储中进行排序。包括(交换式排序法、选择式排序法和插入式排序法)

    • 外部排序法

      数据量过大,无法全部加载到内存中,需要借助外部存储进行排序。包括(合并排序法和直接合并排序法)

冒泡排序法
  • 基本思想:通过对待排序序列从后向前(从下标较大的元素开始),依次比较相邻元素的值,若发现逆序则交换,使值较大的元素之间从前移向后部。

  • 案例:将5个序列24,69,80,57,13使用冒泡排序法从小到大排序

    • 分析

  • 特点在这里插入图片描述

15.3、多维数组—二维数组

  • 二维数组的形式:

    从定义形式上来看:int[][]

    int[][] arr ={{0,0,0,0,0,0,},{0,0,1,0,0,0}}

  • 二维数组的使用方式

    • 使用方式1—动态初始化

      语法:类型[][] 数组名 = new 类型[大小][大小]

      比如:int arr[][] = new int[2][3]

    • 使用方式2—动态初始化

      1)先声明:类型 数组名[][];

      2)再定义(开辟空间): 数组名 = new 类型[大小][大小]

      3)赋值(有默认值,比如int 类型的就是 0)

    • 使用方式3—列数不确定

      例子:在这里插入图片描述

    int[][] arr = new int[3][]; //创建 二维数组,一共有3个一维数组,但是只确定一维数组的个数
            for(int i = 0; i < arr.length; i++){//遍历arr每一个一维数组
                //给每个一维数组开口空间 new
                //如果没有给一维数组 new ,那么 arr[i] 就是 null
                arr[i] = new int[i + 1];
    
                //遍历一维数组,并给一维数组的每个元素赋值
                for(int j = 0; j < arr[i].length; j++){
                    arr[i][j] = i +1;
                }
            }
    
    • 使用方式4—静态初始化

      定义:

      类型[][] 数组名 = {{1,1,1},{8,8,9},{100},}
      //解读:
      //1.定义了一个二维数组arr
      //2.arr有三个元素(每个元素都是一维数组)
      //3.第一个一维数组有3个元素,第二个一维数组有3个元素,第三个一维数组有1个元素
      
  • 二维数组的输出(遍历)

    for(int i = 0; i < arr.length; i++){ //遍历二维数组的每个元素
        //遍历二维数组的每个元素(数组)
        /*解读
        * 1.arr[i] 表示 二维数组的第 i+1 个元素, 比如 arr[0]:二维数组的第一个元素
        * 2.arr[i].length 得到 对应的 每一个元素的长度
        */
        for(int j = 0; j < arr[i].length; j++){
            System.out.print(arr[i][j] + "\t"); //输出了一维数组
        }
         System.out.println();//换行
    }
    
  • 二维数组的关键概念

    1. 二维数组的元素个数:arr.length(即行数)
    2. 二维数组的每一个元素是一维数组,所以要得到每一个一维数组的值,还需要再次遍历
    3. 如果访问第 i+1)个一维数组的第( j+1) 个值:arr[i][j]
  • 二维数组内存存储形式

15.4、数组的使用细节和注意事项

  1. 一维数组的声明方式:

    int[] x 或者 int x[]

  2. 二维数组的声明方式:

    int[][] y 或者 int[] y[] 或者int y[][]

  3. 二维数组实际上是由多个一维数组组成的,它的各个一维数组的长度可以相同,也可以不相同。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值