基础阶段:数组

目录

概述

数组(Array)

特点 

声明与初始化

一维数组

一维数组元素的引用

  一维数组的遍历

一维数组元素的默认初始化值

一维数组的内存解析

二维数组

二维数组元素的默认初始化值

二维数组的内存结构

 数组的赋值与复制的理解

 Arrays工具类的使用

数组的常见异常


概述

数组(Array)

                是多个相同类型数据按一定顺序排列的集合,并用一个名字命名,通过编号的方式对这些数据进行统一管理。

特点

                     1、数组是有序排列的。

                     2、数组属于引用数据类型的变量。

                     3、数组的元素既可以是基本数据类型,也可以是引用数据类型。

                     4、数组创建时,会在内存中开辟一整块连续的空间。

                     5、数组的长度一旦确定就不能修改。

声明与初始化

一维数组

int[] nums; //声明
//1.1 静态初始化:数组的初始化和数组元素的赋值操作同时进行
nums = new int[]{1024, 1025, 1026}; 
//1.2 动态初始化:数组的初始化和数组元素的赋值操作分开进行
String[] names = new String[10];

//2 类型推断
int[] arr = {1, 2, 3, 4, 5, 6};

一维数组元素的引用

        通过角标的方式调用

//数组的角标(索引)从0开始,到数组的长度-1为止
String[] names = new String[3];

names[0] = "张三";
names[1] = "李四";
names[2] = "王五";

  一维数组的遍历

for(int i = 0;i < names.length;i++){
    System.out.println(names[i]);
}

一维数组元素的默认初始化值

        数组元素是整型:0

        数组元素是浮点型:0.0

        数组元素是char型:0或'\u0000',而不是'0'

        数组元素是boolean型:false

        数组元素是引用数据类型:null

一维数组的内存解析

二维数组

        如果一个一维数组的元素是一维数组类型的,则称此数组为二维数组。

//静态初始化
int[][] arr1 = new int[][]{{1,1,1},{2,3},{4,5,6}};


//动态初始化
//方式一:
String[][] arr2 = new String[3][5];
//方式二:
String[][] arr3 = new String[5][];


//也可以这样写
int[] arr4[] = new int[][]{{1,2,3},{4,5},{6,7,8,9}};
int[] arr5[] = {{1,1,1},{2,3},{4,5,6}}; //类型推断


//二维数组元素的调用:角标
System.out.println(arr1[1][1]); //3
System.out.println(arr2[2][1]); //null

//属性
System.out.println(arr4.length);  //3
System.out.println(arr4[1].length); //2
System.out.println(arr4[2].length); //4

//遍历
for(int i = 0;i< arr4.length;i++){
    for(int j = 0;j < arr4[i].length;j++){
        System.out.print(arr4[i][j] + "  ");
    }
    System.out.println();
}

二维数组元素的默认初始化值

        规定:二维数组分为外层数组元素,内层数组元素

                例如:int[][] arr = new int[3][4];

                        外层元素:arr[0], arr[1]等

                        内层元素:arr[0][0], arr[1][2]等

        初始化方式一: int[][] arr = new int[3][4];

                外层元素的初始化值:地址值

                内层元素的初始化值:与一维数组初始化情况相同

        初始化方式二: int[][] arr = new int[3][];

               外层元素的初始化值:null

                内层元素的初始化值:不能调用,否则会报错

二维数组的内存结构

 数组的赋值与复制的理解

 int[] array1, array2;

array1 = new int[]{1,2,3,4};

赋值:

array2 = array1;

        将array1保存的数组的地址值赋给了array2,使得array1和array2共同指向堆空间中的同一个数组实体。

 复制:

array2 = new int[array1.length];

for(int i = 0;i < array2.length;i++){

        array2[i] = array1[i];

}

通过new的方式,给array2在堆空间中新开辟了数组的空间,将array1数组中的元素值一个一个的赋值到array2数组中。

 Arrays工具类的使用

        Arrays定义在java.util包下,提供了很多操作数组的方法。

// boolean equals(int[] a,int[] b):判断两个数组是否相等
int[] arr1 = new int[]{1,2,3};
int[] arr2 = new int[]{1,2,3};
boolean isEquals = Arrays.equals(arr1, arr2);
System.out.println(isEquals);


// String toString(int[] a):输出数组信息
System.out.println(Arrays.toString(arr1));


// void fill(int[] a,int val):将指定值填充到数组之中
Arrays.fill(arr1, 666);
System.out.println(Arrays.toString(arr1));


// void sort(int[] a):对数组进行排序
Arrays.sort(arr2);
System.out.println(Arrays.toString(arr2));


// int binarySearch(int[] a,int key):返回目标元素的下标
int [] arr3 = new int[] {-9,-4,0,4,5,89,90,111,444,666,888};
		int index = Arrays.binarySearch(arr3, 666);
		if(index>=0)
			System.out.println(index); //9
		else
			System.out.println("没找到!");

数组的常见异常

1.数组角标越界异常:ArrayIndexOutOfBoundsException

2.空指针异常:NullPointerException

  • 7
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 4
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值