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();//换行
        }
    }
}
原文地址:https://www.cnblogs.com/birdGe/p/13266005.html