美文网首页java基础
java基础-day06-数组

java基础-day06-数组

作者: 触手不可及 | 来源:发表于2021-06-25 08:38 被阅读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]);
            }
        }
    }
    

    相关文章

      网友评论

        本文标题:java基础-day06-数组

        本文链接:https://www.haomeiwen.com/subject/nbunyltx.html