java基础之数组

来源:互联网 发布:工资计算软件 编辑:程序博客网 时间:2024/06/05 05:06

1、数组是什么?

数组就是一个容器,可以用来装【很多数据元素】,是一种特殊数据类型,引用数据类型。

容器简单理解:容器就像一个装【冰块】的【冰格】,可以装很多的【冰块】。

数组就是【冰格】,数组的元素就是【冰块】。


2、为什么需要它?
之前学的数据类型,基本类型,String,自定义类型都是只能装一个值!!!
有时候我们定义的变量需要装多个数据的时候。
变量,参数,返回值--》装入多个数据
例如:
喜欢的食物,喜欢的明星,喜欢的数字,喜欢的运动,拥有的手机,拥有的朋友。这些数据 可以通过数组来存储。

3、数组的定义
    a)数组描述的是统一类型的【长度固定】若干个数据;

    b)数据按照一定的先后次序排列(位置:0到length-1)组合而成。 其中,每一个数据称作一个数组元素。

4.数组的遍历-》取出数组里所用到元素
     * 语法:
     *
     * for(int idx=0;idx<=数组引用.length-1;idx++){//idx 数组下标
     *       //取出元素
     *    数组元素类型  接收变量=  数组引用[idx];

5.访问数组-使用数组存储取出数据
     *
     * 1)访问数组的位置(下标,索引)->范围:0到length-1
     *   语法:数组引用[位置]
     *   a)把值放入数组的位置
     *     数组引用[位置]=值;
     *   b)取出数组位置的值
     *     数组元素类型  接收的变量=数组引用[位置]
     * 2)访问数组的长度
     *   语法:数组引用.length

6.创建数组对象
     *
     * 1)动态初始化:a)知道数组长度
     *
     * 语法(定义数组引用  指向 动态态初始化的数组对象):
     *
     * 元素类型[]  引用变量名=new  元素类型[长度];
     *
     * 注意点:
     * 动态初始化创建的数组,数组的各位置上都有默认值-》规则和成员变量一致...

7.创建数组对象
     *
     * 1)静态初始化:a)知道数组长度 b)知道元素的内容
     *
     * 语法(定义数组引用  指向  静态初始化的数组对象):
     *
     * 元素类型[]  引用变量名=new  元素类型[]{元素值1,元素值2...};

8.定义变量
     * 语法:  数据类型  变量名;
     *
     * 定义数组的引用变量
     * 语法1:
     * 元素类型[]  引用变量名;(java-》推荐)
     *
     * 语法2:
     * 元素类型  引用变量名[];(c保留)

9.数组的注意点
    
    1)统一类型:存储的数组元素是统一的类型,可以类型兼容,自动类型转换
           a)基本类型:    小数据范围类型    转    大数据范围类型
           b)引用类型:    子类型    转    超类型
    2)长度固定:创建数组对象的时候,长度就设置好了以后不能改变
    3)数组下标-范围(0到len-1)-》访问的时候不能越界
     --》否则报错ArrayIndexOutOfBoundsException
    4)内存连续:数组底层内存区域是连续的,访问(读取和设置效率 高)
    5)存储在堆中:引用类型,每一个数组都是对象存储在堆中
    6)数组的元素类型是引用类型,那么数组所有元素位置存储的是对象地址
    7)数组的超类型指向子类型
    满足:数组引用的数组元素的类型  是数组对象 的数组元素的类型的超类型
    8)Object也是数组的超类型

10.Arrays类:封装了数组常见操作的工具方法
对数组里的内容做一定处理满足业务要求

a)数组里所有元素转字符串
    Arrays.toString

b)数组填充-初始化
    Arrays.fill

c)数组copy
    System.arraycopy
    Arrays.copyOf

d)数组排序
    Arrays.sort(a);
怎么实现对引用类型排序(???)
    1)comparable接口
    2)comparator接口(自学)

f)二分法查找(自学)
    Arrays.binarySearch

g)asList(学了容器说)

11.多维数组(数组的元素也是数组)
注意:通常使用二维数组就够了,最多不超过三维,否则逻辑会很复杂,请检查算法问题。

数组的元素类型    [] 数组引用变量;

int [] [] []arr2 ;    其元素是int [] []类型
int [] [] arr3;    其元素是int [] 类型
int [] arr4;    其元素是int 类型

例如:
1)存储公司2个员工最近3个月的工资。
 2)存储班上3个同学4门科目的成绩。

简单理解:
 1)二维数组理解可以理解为表格,分为行跟列
 2)二维数组有多少个元素(一维数组)就是多少行
 3)二维数组的元素(一维数组)有多少个元素就是多少列
 4)每一行的列数可以不相同

12.二维数组的访问-和一维数组规则一致
        a)访问 长度   .length
        b)访问数组位置      []
     *
     * 二维数组的访问-》
     *a)访问二维数组的长度
     *    语法: 二维数组.length
     *b)访问二维数组的元素(一维数组)
     *  语法: 二维数组[行下标]
     *c)访问二维数组的元素(一维数组)的长度
     *    语法: 二维数组[行下标].length
     *d)访问二维数组的元素(一维数组)的元素
     *    语法: 二维数组[行下标][列下标]
     *    
     * 遍历二维数组里所有的一维数组的元素
     *  
     *  语法:
     *  遍历二维数组里所有的行
     *  for(int rowIdx=0;rowIdx<=二维数组.length-1;rowIdx++){
     *     遍历当前行的所有的列
     *     for(int colIdx=0;colIdx<=二维数组[rowIdx].length-1;colIdx++){
     *         //当前行的当前列
     *         二维数组[rowIdx][colIdx]

13.二维数组动态初始化
     *
     * 定义二维数组引用  指向    动态初始化的二维数组对象
     *
     * 语法1:如果每一行列的长度一致-》采用该语法
     * 一维数组元素类型 [][]  二维数组引用名 =  new 一维数组元素类型 [行长度][列长度];
     *
     * 注意点:该语法,会创建行长度的二维数组,并为每一个位置创建一个列长度的一维数组。
     *
     *
     * 语法1:如果每一行列的长度不一致-》采用该语法
     * 一维数组元素类型 [][]  二维数组引用名 =  new 一维数组元素类型 [行长度][];
     *
     * 注意点:该语法,会创建行长度的二维数组,并为每一个位置设置null。

14.二维数组静态初始化
     *
     * 定义二维数组引用  指向    静态初始化的二维数组对象
     * 语法:
     * 一维数组元素类型 [][]  二维数组引用名 =  new 一维数组元素类型 [][]{
     *       {1行1列,1行2列,...},//二维数组第1行内容
     *       {2行1列,2行2列,...}//二维数组第2行内容

原创粉丝点击