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();//换行 } } }