二维数组2021-07-30java学习日记

二维数组

p558-p575

关键词: 静动初始化 使用方案案例 基础语法

1、二维数组其实是一个特殊的一维数组

特殊在这个一维数组当中的每一个元素是一个一维数组。

2、三维数组是什么?

三维数组是一个特殊的二维数组,特殊在这个二维数组中每一个元素是一个一维数组
实际开发中最多使用是一维数组。二维数组也很少使用。三维数组几乎不用。

3、二维数组静态初始化

在这里插入图片描述

4、关于二维数组中的元素的:读和改

int[] a0 = a[0];
int b = a0[0];
System.out.println(b);
合并以上代码

System.out.println(a[0][0]);
a[二维数组中的一维数组的下标][一维数组的下标];

二维数组的方法调用

代码例:

public class ArrayTest12 {
    public static void main(String[] args) {
        int[][] a = {
                {1,2,3,4,5},
                {6,7,8,9,10},
                {11,12,13,14,15}
        };
        printArray(a);
    }
    public static void printArray(int[][] array){
        //遍历二维数组方法。
        for (int i = 0; i <array.length ; i++) {
            for (int j = 0; j <array[i].length ; j++) {
                System.out.println(array[i][j]);
            }
            System.out.println();
        }
    }
}

简短总结:

1、数组
1.1、数组的优点和缺点,并且要理解为什么。
第一:空间存储上,内存地址是连续的。
第二:每个元素占用的空间大小相同。
第三:知道首元素的内存地址。
第四:通过下标可以计算出偏移量。
通过一个数学表达式,就可以快速计算出某个下标位置上元素的内存地址,
直接通过内存地址定位,效率非常高。

	优点:检索效率高。
	缺点:随机增删效率较低,数组无法存储大数据量。
	注意:数组最后一个元素的增删效率不受影响。

1.2、一维数组的静态初始化和动态初始化
	静态初始化:
		int[] arr = {1,2,3,4};
		Object[] objs = {new Object(), new Object(), new Object()};
	动态初始化:
		int[] arr = new int[4]; // 4个长度,每个元素默认值0
		Object[] objs = new Object[4]; // 4个长度,每个元素默认值null

1.3、一维数组的遍历
	for(int i = 0; i < arr.length; i++){
		System.out.println(arr[i]);
	}

1.4、二维数组的静态初始化和动态初始化
	静态初始化:
		int[][] arr = {
								{1,2,34},
								{54,4,34,3},
								{2,34,4,5}
							};

		Object[][] arr = {
								{new Object(),new Object()},
								{new Object(),new Object()},
								{new Object(),new Object(),new Object()}
							};
	动态初始化:
		int[][] arr = new int[3][4];
		Object[][] arr = new Object[4][4];
		Animal[][] arr = new Animal[3][4];
		// Person类型数组,里面可以存储Person类型对象,以及Person类型的子类型都可以。
		Person[][] arr = new Person[2][2];
		....

1.5、二维数组的遍历
	for(int i = 0; i < arr.length; i++){ // 外层for循环负责遍历外面的一维数组。
		// 里面这个for循环负责遍历二维数组里面的一维数组。
		for(int j = 0; j < arr[i].length; j++){
			System.out.print(arr[i][j]);
		}
		// 换行。
		System.out.println();
	}

1.6、main方法上“String[] args”参数的使用(非重点,了解一下,以后一般都是有界面的,用户可以在界面上输入用户名和密码等参数信息。)

1.7、数组的拷贝:System.arraycopy()方法的使用
	数组有一个特点:长度一旦确定,不可变。
	所以数组长度不够的时候,需要扩容,扩容的机制是:新建一个大数组,
	将小数组中的数据拷贝到大数组,然后小数组对象被垃圾回收。

1.8、对数组中存储引用数据类型的情况,要会画它的内存结构图。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值