跳至主要內容

5、数组

T4makojava基础语法java数据结构大约 3 分钟

数组

数组是有序排列的
数组属于 引用数据类型
数组的元素既可以是 基本数据类型,也可以是 引用数据类型
创建数组对象会在内存中开辟一整块 连续 的空间
数组的 长度一旦确定就不能修改

数组的长度:数组.length

1、一维数组

数组一旦 初始化,其长度就是确定的且不可修改

一维数组的 声明初始化(静态初始化,动态初始化)

public class ArrayTest {
	public static void main(String[] args) {

		int[] a,b,c[];  // 声明了两个一维数组,一个二维数组
    int d[][],e[],f; // 声明了二维数组,一维数组,一个 int

		// 一维数组的声明和初始化
		// 静态初始化:数组的初始化和数组元素的赋值操作同时进行
		int[] ids;
		ids = new int[] { 1001, 1002, 1003, 1004 };
		int[] nums = {1,2,3,4};
		// 动态初始化:数组的初始化和数组元素的赋值操作分开进行
		String[] names = new String[3];

		
		

		// 调用数组指定位置的元素
		names[0] = "a";

		// 获取数组长度
		System.out.println(names.length);

		//一维数组元素的默认初始化值
		/*
		 整型数组:0 
		 浮点型数组:0.0 
		 字符型数组:0 (不是 '0')
		 boolean数组:false 
		 String数组(引用类型):null
		 */
		int[] arr = new int[3];
		for (int i = 0; i < arr.length; i++) {
			System.out.println(arr[i]);
		}
	}
}

相关信息

  1. 关于 char 数组的输出:
    char[] test = {'a','b'};
    System.out.println(test); // ab
    System.out.println("" + test); // 地址值
    
  2. 数组复制:
    Stream.arraycopy()
    Arrays.copyOf()
    Arrays.copyOfRane()

内存的简化结构:
image-20220626150314398

一维数组内存实例:
image-20220626151804844

2、多维数组

静态初始化,动态初始化

相关信息

二维数组 第一个 数必须有

二维数组初始化

静态初始化: int[][] arr1 = new int[][]{{1,2,3},{4,5}}; (a[0].length 等于 3,a[1].length 等于 2)
动态初始化:
String[][] str2 = new String[3][];
String[][] str1 = new String[3][2];
int[] arr2[] = new int[3][2];

		//二维数组的调用
		System.out.println(arr1[0][1]);
		
		//对二维数组中每个一维数组初始化
		arr2[1] = new int[4];
		
		
		//二维数组初始化
		int[][] arr0 = new int[3][4];
		double[][] arra = new double[3][];
		System.out.println(arr0);//地址值
		System.out.println(arr0[0]);//地址值
		System.out.println(arr0[0][0]);//0
		System.out.println(arra[0]);//null 引用数据类型默认值null
		System.out.println(arra[0][0]);//报错,空指针异常

相关信息

关于二维数组初始化默认值:
int[][] arr = new int[4][3];

  • 外层元素的初始化值为:地址值
  • 内层元素的初始化值为:与一维数组初始化值相同

int[][] arr = new int[4][0];

  • 外层元素的初始化值为:null
  • 内层元素的初始化值为:不能调用,报错。

二维数组的内存解析

image-20220626172438875

相关信息

数组末尾元素的下标是arr.length-1

相关信息

数组的复制:

//不能直接 arr = arr2 赋值地址,本质为一个
int arr2 = new int[arr.length];
//for循环对每一个赋值

3、Arrays 工具类

java.util.Arrays 类为操作数组的工具类,包含了操作数组的各种方法(包括排序,查找等)。

关于 Arrays 类

image-20220627162154617

4、数组中的常见异常

  • 索引越界:ArrayIndexOutOfBoundException
  • 空指针异常:NullPointerException

对于 int arr[4][];

  • 调用 arr[0] 结果为 null
  • 调用 arr[0][0] 空指针异常
评论
  • 按正序
  • 按倒序
  • 按热度
Powered by Waline v2.15.5