java基础

java基础-day06-数组

2021-06-25  本文已影响0人  触手不可及

数组【重点】

1. 数组

1.1 为什么要使用数组
是否存在可能性需要一口气处理100个int类型数据???
    开发中一定会出现对于相同数据类型的使用操作过程,但是如果按照一个一个的变量定义来进行数据处理,保存和操作,会导致以下一些问题
    1. 代码过于臃肿。
    2. 变量命名压力很大,阅读性极差
    3. 对于数据的操作过程存在压力,没有【普适性】的操作方法
1.2 生活中数组概念
超市
    对于商品进行归类处理,同一个区域是同一类商品,同一个货架是一种商品。

图书馆
    书籍分类 T Technology
    5楼东
    1. <<电路>> 同一本书会存储于同一个书架位置上
    2. <<电路>> 这本书会有一个唯一编号 T-150
    3. <<电路>> 这本书有10本,每一本都有一个独立的编号
        T-150-01 ~ T-150-10
  
总结:
    1. 书籍存储统一,并且连续。
    2. 书籍有一个统一名字 ==> 统一编号 T-150
    3. 每一本书又是一个独立的个体,有一个唯一标记
        T-150-01 T-150-05
1.3 Java中定义数组的格式【重点】
格式:
    数据类型[] 数组名 = new 数据类型[容量];

赋值号左侧
    数据类型:
        告知编译器,当前数组中能够保存的数据类型有且只能是哪一个数据类型,其他类
        型一概不允许,这里是为了保存【数据类型一致化】
    []:
        1. 这里定义的是一个数组类型
        2. 告知你数组名是一个【引用数据类型】【指向性】
    数组名:
        1. 操作数组非常重要的内容
        2. 数组名是一个【引用数据类型】【变量】

赋值号右侧
    new:
        1. new关键字是向内存的【堆区】申请一块内存空间。
            内存就是一个仓库,申请内存就是相当于找仓库管理员申请一块区域,用于保
            存货物
        2. 清空整个申请内存空间中的所有数据。
    数据类型:
        前后呼应,明确告知编译器当前数组中有且只能保存的数据类型是哪一个。
    [容量]:
        Capacity
        告知编译器当前数组中能够保存的指定数组类型个数是多少个。
        并且一旦确定当前容量数据,该容量不可以改变。
1.4 数组定义案例
/*
数据类型[] 数组名 = new 数据类型[容量];
这里定义了一个可以保存10个int类型的数组,
数组名arr
*/
int[] arr = new int[10];
1.5 数组下标
数组下标是当前数组中存储元素的唯一索引标记
比如说一个int类型数组,容量为10,这里就可以使用下标来区分数组中的每一个元素。

数组下标从 0 开始 到 数组容量 - 1
    int[] arr = new int[10];
    有效下标范围:
        0 ~ 9

这里需要操作数组中指定下标元素
    数组名[有效下标]; 可以赋值,可以取值
class Demo2 {
    public static void main(String[] args) {
        /*
        数据类型[] 数组名 = new 数据类型[容量];
        这里定义了一个可以保存10个int类型的数组,
        数组名arr
        */
        int[] arr = new int[10];  
        
        // 赋值数组中下标为0以及下标为5的元素
        arr[0] = 10;
        arr[5] = 20;
        
        // 赋值数组中下标为10的元素
        // arr[10] = 10;
        /*
        Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 10
            at Demo2.main(Demo2.java:15)
        ArrayIndexOutOfBoundsException 
            数组 下标 超出范围 异常 ==> 数组下标越界异常
        */
        
        // 赋值数组中下标为-1的元素
        arr[-1] = 10;
        /*
        Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: -1
            at Demo2.main(Demo2.java:24)
        ArrayIndexOutOfBoundsException 
            数组 下标 超出范围 异常 ==> 数组下标越界异常
        注意:
            -1是非法下标,在涉及到数组操作的代码中,会使用-1作为一定的错误标记。
        */
        
        // 打印展示数组中下标为0以及下标为5的元素
        System.out.println("arr[0] : " + arr[0]);
        System.out.println("arr[5] : " + arr[5]);
    }
}
1.6 数组内存分析图
image.png
1.7 数组和循环
    数组算法中大量的使用到循环,尤其是for循环!!!因为数组存在有效下标操作的方式,并且下标操作有一定的范围和等差数列内容。
/* for循环和数组联用 */
class Demo3 {
    public static void main(String[] args) {
        /*
        这里定义了一个int类型数组,容量为10
        数组名是arr
        */
        int[] arr = new int[10];
        
        /*
        arr.length 获取数组的容量属性
        利用循环给数组中的每一个元素进行赋值操作
        */
        for (int i = 0; i < arr.length; i++) {
            arr[i] = i + 1;
        }
        
        // 利用循环展示数组中的所有元素内容
        for (int i = 0; i < arr.length; i++) {
            System.out.println("arr[" + i + "] = " + arr[i]);
        }
    }
}
1.8 数组地址转移分析图
image.png

2. 数组和方法关系

2.1 方法参数使用数组
public static void main(String[] args) {
    
}
/*
main方法所需参数就是一个数组类型,该数组类型是String字符串

数组作为方法的参数:
    public static returnType methodName(arugmentType[] arrayName)
*/
需求
    给予int类型数组赋值操作

方法分析:
    public static 
        固定格式
    返回值类型:
        void
    方法名:
        【见名知意,动宾结构,小驼峰命名法】
        assignIntArray 
    形式参数列表:
        这里所需的参数是int数据类型数组
        (int[] arr);

方法声明:
    public static void assignIntArray(int[] arr);
class Demo5 {
    public static void main(String[] args) {
        int[] array = new int[10];
        
        // 这里需要调用一个int类型数组作为参数的方法
        assignIntArray(array);
        printIntArray(array);
    }
    
    /**
    * 赋值用户指定的int类型数组
    *
    * @param arr 用户指定的int类型数组
    */
    public static void assignIntArray(int[] arr) {
        for (int i = 0; i < arr.length; i++) {
            arr[i] = i + 1;
        }
    }   
    
    /**
    * 展示用户指定的int类型数组
    *
    * @param arr 用户指定的int类型数组
    */
    public static void printIntArray(int[] arr) {
        for (int i = 0; i < arr.length; i++) {
            System.out.println("arr[" + i + "] = " + arr[i]);
        }
    }
}
上一篇 下一篇

猜你喜欢

热点阅读