zoukankan      html  css  js  c++  java
  • Java基础语法(下)-数组Array

    Java基础语法(下)-数组Array、

    • 数组概略
    package com.bird_01;
    /*
     * 数组:存储同一钟数据类型的多个元素的容器。
     * 
     * 定义格式:
     *         A:数据类型[] 数组名;(推荐)
     *         B:数据类型 数组名[];
     * 
     *         举例:
     *             int[] arr;定义了一个int类型数组,数组名是arr
     *             int arr[];定义了一个int类型的变量,变量名是arr数组
     * 
     * 数组初始化:
     *         A:所谓的初始化,就是为数组开辟内存空间,并为数组中的每个元素赋予初始值
     *         B:我们有两种方式可以实现数组的初始化
     *             a:动态初始化    只给出长度,由系统给出初始化值
     *             b:静态初始化    给出初始化值,由系统决定长度
     * 
     *
     * 动态初始化:
     *         数据类型[] 数组名 = new 数据类型[数组长度];
     * 
     */
    public class ArrayDemo {
        public static void main(String[] args) {
            //数据类型[] 数组名 = new 数据类型[数组长度];
            int[] arr = new int[3];
            /*
             * 左边:
             *         int:说明数组中的元素类型是int类型
             *         []:说明这是一个数组
             *         arr:这是数组的名称
             * 
             * 右边:
             *         new:为数组申请内存分配,开辟空间
             *         int:说明数组中的元素类型是int类型
             *         []:说明这是一个数组
             *         3:数组的长度,其实就是数组中的元素个数
             */
            
            //输出数组名
            System.out.println("arr:"+arr);//[I@1a116c9
            //我们获取数组的地址值是没有意义的,我要的是数组中的元素值,该怎么办呢?
            //不用担心,java已经帮你想好了这个问题
            //其实数组中的每个元素都是有编号的,编号从0开始,最大的编号是数组的长度-1
            //通过数组名和编号的配合使用我们就可以获取指定编号的元素值
            //这个编号专业叫法:索引
            //访问格式:数组名[索引]
            System.out.println(arr[0]);
            System.out.println(arr[1]);
            System.out.println(arr[2]);
            
        }
    }
    • Java中的内存分配
    •  一个数组的内存图

    •  两个数组内存图

    •  两个数组指向同一个地址的内存图

    •  静态初始化内存图

    package com.brid_03;
    
    /*
     * 两个常见小问题:
     *         ArrayIndexOutOfBoundsException:数组索引越界异常
     *             产生的原因:我们访问了不存在的索引
     * 
     *         NullPointerException:空指针异常
     *             产生的原因:数组已经不在指向堆内存的数据了,你还用数组名去访问数据
     */
    public class ArrarDemo {
        public static void main(String[] args) {
            int[] arr = { 1, 2, 3 };
            // System.out.println(arr[3]);
    
            arr = null;
            System.out.println(arr[1]);
        }
    }
    • 数组常见两个小问题图解

    package com.bird_04;
    /*
     * 数组遍历(依次输出数组中的每一个元素)
     */
    public class ArrayTest {
        public static void main(String[] args) {
            //定义一个数组
            int[] arr = {11,22,33,44,55};
            
            //原始做法
            System.out.println(arr[0]);
            System.out.println(arr[1]);
            System.out.println(arr[2]);
            System.out.println(arr[3]);
            System.out.println(arr[4]);
            System.out.println("--------");
            
            //通过for循环实现获取数据0-4
            for(int x=0; x<5; x++) {
                System.out.println(arr[x]);
            }
            System.out.println("--------");
            
            //为了解决我们去数组中数元素的个数,数组就提供了一个属性:length
            //用于获取数组元素个数
            //格式:数组名.length
            System.out.println("数组共有"+arr.length+"个");
            System.out.println("--------");
            
            for(int x=0; x<arr.length; x++) {
                System.out.println(arr[x]);
            }
        }
    }
    • 数组操作之获取最值图解

    package com.bird_04;
    
    /*
     * 比较数字最值(最大值或最小值)
     */
    public class ArrarTest2 {
        public static void main(String[] args) {
            // 定义数组
            int[] arr = { 22, 88, 11, 89, 45 };
    
            // 定义参照物
            int mini = arr[0];
    
            // 循环比较
            for (int i = 1; i < arr.length; i++) {
                if (arr[i] < mini) {
                    mini = arr[i];
                }
            }
            System.out.println("数组最小值:"+mini);
        }
    }
    • 二维数组的概述和基本使用
    package com.bird_05;
    /*
     * 二维数组:其实就是元素为一维数组的数组。
     * 
     * 定义格式:
     *         A:数据类型[][] 数组名; (推荐的方式)
     *         B:数据类型 数组名[][];
     *         C:数据类型[] 数组名[];
     * 初始化:
     *         A:动态初始化
     *             数据类型[][] 数组名 = new 数据类型[m][n];
     *             m表示的是二维数组中一维数组的个数
     *             n表示的是一维数组中的元素个数
     *         B:静态初始化
     *             数据类型[][] 数组名 = new 数据类型[][]{{元素...},{元素...},{元素...},...};
     *             简化格式:
     *             数据类型[][] 数组名 = {{元素...},{元素...},{元素...},...};
     * 
     * 二维数组名配合索引可以获取到每一个一维数组。
     * 每一个一维数组配合索引名可以获取到数组中的元素。
     * 
     * 假如我有一个二维数组:arr。
     * 我要从中获取一维数组:arr[索引]
     * 我要从中获取二维数组的元素:arr[索引][索引]
     */
    public class ArrayArrayDemo {
        public static void main(String[] args) {
            //数据类型[][] 数组名 = {{元素...},{元素...},{元素...},...};
            int[][] arr = {{1,2,3},{4,5,6},{7,8,9}};
            
            System.out.println(arr); //[[I@1774b9b
            System.out.println(arr[0]); //[I@104c575
            System.out.println(arr[1]);
            System.out.println(arr[2]);
            
            //如何获取二维数组中的元素呢?
            System.out.println(arr[0][0]);
            System.out.println(arr[1][1]);
            System.out.println(arr[2][2]);
        }
    }
    •  二维数组遍历
    package com.bird_05;
    /*
     * System.out.print() 输出
     * System.out.println() 输出并且换行
     */
    public class ArrayArrayTest {
        public static void main(String[] args) {
            // 声明二维数组
            int[][] arr = {{1,2,3},{4,5,6},{7,8,9}};
            //循环遍历
            for(int y=0; y <arr.length;y++)
            {
                for (int x = 0; x < arr[y].length; x++) {
                    System.out.print(arr[y][x]+"  ");
                }
                System.out.println();//换行
            }
        }
    }
  • 相关阅读:
    CF938E Max History
    经典论文系列 | 目标检测--CornerNet & 又名 anchor boxes的缺陷
    在 Intenseye,为什么我们选择 Linkerd2 作为 Service Mesh 工具(Part.2)
    在 Intenseye,为什么我们选择 Linkerd2 作为 Service Mesh 工具(Part.1)
    Java概述
    算法 --- 二分法 冒泡排序 递归 快速排序
    二维数组
    数组
    SNMP "Simple Network Management Protocol" "简单网络管理协议"。
    常用api --- BigDecimal 包装类 Integer Arrays
  • 原文地址:https://www.cnblogs.com/birdGe/p/13266005.html
Copyright © 2011-2022 走看看