数组

一. 概念[理解]
    数组:计算机内存中一块连续的存储空间,存储多个相同类型的数据

    二. 数组的基本语法[应用重点]
    1. 数组的定义
        ① 声明数组: 指定数据类型,同时给出数组名.
                         数据类型[] 数组名;
        ② 分配空间: 指定数组的长度.
                        数组名 = new 数据类型[长度];
        ③ 使用数组中数据
        

    2. 数组中下标的 范围:  0 ~  数组的长度-1   (size-1)
    
    3. 数组中存储的数据称为数组元素.
    
    4. 对数组中元素的存储或是获取称为数组的访问.
    
    5. 对数组中元素的访问,通过数组名和下标: 数组名[下标];
    
    6. 访问数组时,如果超出数组的下标范围,编译通过,运行报错,错误信息:
             java.lang.ArrayIndexOutOfBoundsException(下标越界异常)

    7. 数组的遍历:将数组中的元素一一访问的过程.
    
    8. 获取数组的长度: 数组名.length
        for(int  i=0;i<数组名.length;i++){   //---->i用于控制数组的下标
            //对数组的操作
            System.out.println(数组名[i]);
        }
    9. 数组具有默认值,如下:
            整数类型   0
            小数类型   0.0
            字符类型   空字符(\u0000)
            布尔类型   false
            引用类型   null
            
    10. 其它的定义方式;
        ① 声明的同时并分配空间:
            数据类型[] 数组名 = new 数据类型[长度];

        ② 声明的同时并且初始化:(显示初始化)
            数据类型[] 数组名 =new 数据类型[]{值1,值2,值3};
                注意:{}中数值的个数,决定当前数组的长度;
                    []中不能再指定数组的长度

        ③ 声明的同时并且初始化:(显示初始化)
            数据类型[] 数组名 ={值1,值2,值3};
            注意:声明和初始化必须一起进行.
                    错误的写法:
                        int[] a;
                        a={1,4,6,3};//ERROR
数组的内存存储:
    1. 数组在内存的空间是连续的.
    2. 数组类型的变量存储的是数组的首地址.
    3. 数组每一个内存空间的地址:
    首地址 + 下标*数据类型的字节数
    4. 数组的下标从 0 开始,目的是为了提高寻址效率.
    5. 数组类型变量之间相互赋值,传递的是数组的首地址.
    特点:寻址效率高,查询快

数组的扩容:
    1.新建一个数组,长度大于原数组
      循环将原数组中所有元素逐一赋值给新数组。

    2.新建一个数组,长度大于新数组
      System.arraycopy(原数组,原数组起始,新数组,新数组起始,长度);

    3.java.util.Arrays.copyOf(原数组, 新长度);//返回带有原值的新数组。

    数组的排序:
        1.冒泡排序:相邻的两个元素进行比较,将值小的数放在前面(小--->大);
        2.选择排序:固定一个下标(比如0,1)对应的元素跟后面的元素一一比较;
        3.快速排序:java.util.Arrays.sort(数组名);
    
二维数组[了解]:
    1. 定义语法:
        ① 声明:数据类型[][] 数组名;
        ② 分配空间: 数组名=new 数据类型[行数/高维][列数/低维];

    2. 访问二维数组中元素: 数组名[行下标|高维下标][列下标|低维下标]
                           a[2][1]: 第2行第1列
                          
    3. 二维数组同一维数组一样,都具有默认值.
    
    4. 二维数组的遍历:
            //外层循环:控制行下标
            for(int i=0;i<行数;i++){
                //内层循环:控制列下标
                for(int j=0;j<列数;j++){
                    System.out.print(a[i][j]);
                }
                System.out.println();//换行...
            }
    
    5. 二维数组的行数|高维数组的长度:数组名.length
       二维数组的列数|低维数组的长度:数组名[i].length
       
    6. 二维数组:以数组作为数组元素的数组,又称为矩阵
    
    7. 其它定义方式:
    
        ① 数据类型[][] 数组名= new 数据类型[行数][列数];
        
        ② 显示初始化:
            数据类型[][] 数组名 =new 数据类型[][]{{值1,值2},{值3,值4},{值5,值6}};
            
            注意:[][]中不能指定行数和列数.
    
        ③ 显示初始化:
            数据类型[][] 数组名 ={{值1,值2},{值3,值4},{值5,值6}};
            
            注意:声明和初始化需要一起进行.
    
    8. 定义二维数组时,可以只指定行数,但是不能只指定列数.
            int[][] a=new int[3][];//正确
            int[][] b=new int[][5];//错误
            
    9. 不规则的二维数组:每一行的 列数不相同.
        int[][] a=new int[3][];
        a[0] =new int[2];
        a[1] =new int[3];
        a[2] =new int[1];
        
        其它获取方式: int[][] a={{1,2},{6,8,4,3},{9,3,1}};

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值