Java中的数组类型

Java中的数组从运行机制上是没有多维的,但是Java中支持多维结构的语法,下面我们就来谈一下Java中的一维数组和多维数组

一.一维数组
1.数组的理解
数组(Array),是多个相同类型数据按一定顺序排列 的集合,并使用一个名字命名,并通过编号的方式 对这些数据进行统一管理。
2.数组的初始化
一维数组的初始化分为静态初始化和动态初始化,静态初始化是在定义数组的同时给出数组元素的值,而动态初始化只是制定了数组的长度没有去给定数组的值,当然在数组中,初始化的时候,不能既给定了数组的长度,又给数组赋值。在数组声明之后,他的长度是不可以改变的,一旦引用超过长度就会报错

int [] array1 = new int [] {2,3,5,7,11,13,17,19,};//此代码为静态初始化
int [] array2 = new int [5];/此代码为动态初始化

3.一维数组的使用
数组最常用的方法是访问数组的元素,包括对数组的使用和赋值,访问数组是一般在数组变量名后加一个[],[]中就是数组的索引,Java中数组的索引是从0开始的,最后一个元素的其长度减1

int [] ar = new int [5];
ar[2] =0;//这就是对一维数组的赋值操作

4.如何访问数组的长度
在Java中访问数组的长度需要访问数组的length属性,通过这个属性可以获得数组的长度,一旦获得数组的长度就可以遍历数组

int[] arr1 = new int [] {12,34,55,34,56};
int weight = arr1.length;//获取了数组的长度

5.遍历数组
在Java中可以使用上述的length属性来遍历数组,主要方法如下

int [] arr4 = new int[]{1,23,44,55,66,23,12,};
//遍历数组
for (int i = 0 ;i < arr4.length; i++){
		System.out.println(arr4[i]);
}

6.数组的初始化值
在数组中的初始化值和它定义的类型相关连,short,byte,int,long类型的初始化值为0;double,float型的初始化值为0.0;boolean 类型的初始化值为false;char型的初始化值为 0 ;引用类型的初始化值为null
7.数组在内存中的结构上面就是数组在内存中的结构

二. 二维数组
1.二维数组的初始化及其定义
二维数组和一维数组一样分为静态初始化和动态初始化

int[][] arr =new int [][]{{1,23,4},{12,33,44,5},{}12,34,5,66,};//这是静态初始化
int [][] arr1 = new int [3][4];//这是动态初始化
int[][] arr3 = new int [3][];//也可以只定义行数,

2.二维数组实质上是一维数组,他只不过是将数组元素引用了一个一维数组,当然二维数组的调用使用两个[]来实现,第一个[] 表示的是数组的索引,第二个[]表示的是引用那个一维数组的索引。

int [][] arr1 = new int [][] {{12,23,23,4,5},{123,5,89,}};
System.out.println(arr1 [0][1]);//这个输出的是23

3,获取数组的长度

int [] [] arr1= new int [3][4];
System.out.println(arr1.length);//输出的是3
System.out.println(arr1[0].length);//输出的是4

以上代码中第一个输出的是3,因为arr管理的是一个3个长度的数组,而第二个输出的是4,因为每一个数组元素又管理的是一个4个元素的一维数组;
4,遍历一个二维数组
遍历二维数组用两个for循环来实现

int [][] arr = new int [3][4];
for (int i = 0; i< arr.length; i++){//
	for (int j = 0; j < arr[i].length;j++){
		System.out.println(arr[i][j]);
		}
	}

5.二维数组的初始化值
外层:初始化值为地址值;
内层:初始化值为定义的类型

int [][] arr1 = new int [12][3];
System.out.println(arr1[1])://输出的是地址值
System.out.println(arr [1]][2]);//输出的是0 

6.二维数组的内存解析
在这里插入图片描述

三. Arrays类工具
1.boolean equals(int[] a,int[] b) 判断两个数组是否相等。

// * 	1 boolean equals(int[] a,int[] b) 判断两个数组是否相等。
		int[] arrs1 = new int [] { 1,2,4,3};
		int [] arrs2 = new int [] {1,2,2,3};
		System.out.println(Arrays.equals(arrs1,arrs2));

2 String toString(int[] a) 输出数组信息。

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

3 void fill(int[] a,int val) 将指定值填充到数组之中。

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

4 void sort(int[] a) 对数组进行排序。

//	4 void sort(int[] a) 对数组进行排序。
		int [] numbers = new int[] {-12,-11,-5,0,4,6,65,78,};
		Arrays.sort(numbers);
		System.out.println(Arrays.toString(numbers));

5 int binarySearch(int[] a,int key) 对排序后的数组进行二分法检索指定的值

//	5 int binarySearch(int[] a,int key) 对排序后的数组进行二分法检索指定的值。
		int [] numbers1 = new int[] {-12,-11,-5,0,4,6,65,78,};
		int number = -12;
		int check = Arrays.binarySearch(numbers1, number);
		if (check >= 0) {
			System.out.println("找到了并且在" + check + "位置");
		}else 
		{
			System.out.println("what's a pity!!");
		}
		

四. 数组中常见的异常
1.数组角标越界异常(ArrayoutBoundsException)
在使用或者赋值的过程中,超过了数组的长度

int [] arr = new int [2];
System.out.println(arr [4]);//报数组下标越界

2.空指针的异常(ArrayPointerException)

//方法一
int[] arr = new int [2];
arr = null;
System.out.println(arr[1]); //报错空指针异常
//方法二
int [][] arr1 = new int [12][];
System.out.println(arr1[2][2]);//报错空指针异常
String [] arr3 = new String [3];
arr3 [1]= null;
System.out.println(arr3[1].toString());//报错空指针异常
  • 2
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

最好的文酱

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值