Java数组的全面介绍,全方面理解Java数组

Java数组的全面介绍,全方面理解Java数组

数组的相关知识
一、数组的概述
1.数组的理解:数组(Array),是多个相同类型数据按一定顺序排列的集合,并使用一个名字命名,并通过编号的方式对这些数据进行统一管理。
2.数组相关的概念:

数组名
元素
角标、下标、索引
〉数组的长度:元素的个数
3.数组的特点:数组是有序排列的
4.数组属于引用数据类型的变量。数组的元素,既可以是基本数据类型,也可以是引用数据类型
5.创建数组对象会在内存中开辟一整块连续的空间

一维数组的使用

1.一维数组的声明和初始化

  • 声明
int[] arr1 ; //声明一个int型的数组
double[] arr2; //声明一个double型的数组
String[] arr3;//声明一个String型的数组 
  • 初始化
    静态初始化:数组的初始化和数组的元素赋值操作同时进行。
int[] arr1;//声明一个arr1的数组
arr1 = new int[] {1,2,3}; //创建了一个长度为3的int型数组
动态初始化:数组的初始化和数组的元素的赋值操作分开进行
double[] arr2 = new double[3];
arr2[0] = 1;
arr2[1] = 2;
arr2[2] = 3;

总结:一旦数组的初始化后它的长度也就确定了。
2.如何调用数组的指定位置的元素
通过角标(索引)

int[] arr1;
arr1 = new int[] {1,2,3};
System.out.println("这三个元素的值是"+arr1[0]+ " "+arr1[1]+" "+arr1[2]);//通过角标调用

3.如何获取数组的长度,调用数组中的length属性,比如

double[] arr2 = new double[3];
System.out.print("此数组的长度是:+arr2.length)

结果如下:

4.如何遍历数组

double[] arr2 = new double[3];
for(int i = 0;i <arr2.length;i++) {
			System.out.println(arr2[i]);
}

大家可以猜一猜输出的结果是多少?

5.数组元素的默认初始化值
上面的结果是三个0.0你猜对了吗?在给初始化double型数组时,内存就默认给数组的每个元素为0.0。

  • 数组元素整型(int、short、byte、long),默认初始化值是0
		int[] a1 = new int[2];
		byte[] a2 = new byte[2];
		long[] a3 = new long[2];
		short[] a4 = new short[2];
		System.out.println(a1[0]+" "+a2[0]+" "+a3[0]+" "+a4[0]);

结果为:0 0 0 0
在这里插入图片描述

  • 元素是浮点型(float、double),默认初始化值为0.0
		float[] a1 = new float[2];
		double[] a2 = new double[2];
		System.out.println(a1[0]+" "+a2[0]);

结果如下:
在这里插入图片描述

  • 数组元素是char型的,默认初始值是\u0000(0)
		char[] a1 = new char[2];
		System.out.println("结果是:"+a1[0]);
		System.out.println("=========================");
		if(a1[0]==0) {
			System.out.println("结果为零");
		}

结果如下:
在这里插入图片描述
这里的结果没有显示出来,但是我们用if语句证明了这里输出的结果是0(不是数字零,而是ASCII码中的零).

  • 数组元素是引用型的,默认初始值为null\
		String[] a1 = new String[2];
		System.out.println("结果是:"+a1[0]);

在这里插入图片描述
6.一维数组的内存解析
首先我们通过一张图来了解一下,数据在计算机内存是怎么存储的
在这里插入图片描述
首先,我们来看下这段代码

int[] arr = new int[]{1,2,3};
String[] arr1 = new String[4];
arr1[1] = "刘德华";
arr1[2] = "张学友";
arr1 = new String[3];
System.out.print(arr[1]);

下面我们来解释以下这段代码:
首先int[] arr = new int[]{1,2,3};,在堆(heap)中开辟一个内存空间,
arr指向这个内存空间的地址(数组的首地址),并将1,2,3赋值。
String[] arr1 = new String[4];同样在堆(heap)中开辟了一个内存空间,并将默认初值赋为null,接着执行语句arr1[1] = "刘德华";arr1[2] = "张学友";将arr1[1]、arr1[2]分别赋值为“刘德华”、“张学友”。
在这里插入图片描述
二维数组、多维数组的使用(主要介绍二维)

1.二维数组的声明和初始化.

  • 声明
    int[][] arr1int arr1 [][]
  • 初始化
    静态初始化:
    int[][] arr = new int[][] {{1,2,3},{4,5},{6,7,8},{9,10,11,12}};
    看图理解:在这里插入图片描述
    动态初始化
    int[][] arr1 = new int[3][];int[][] arr1 = new int[3][2];
    2.如何调用数组指定位置的元素

在第一个[]中输入行,在第二个[]输入列,但注意从0开始

		int[][] arr = new int[][] {{1,2,3},{4,5},{6,7,8},{9,10,11,12}};
		System.out.println(arr[2][1]);

3.如何获取数组的长度

	int[][] arr = new int[][] {{1,2,3},{4,5},{6,7,8},{9,10,11,12}};
		System.out.println(arr.length);
		System.out.println(arr[1].length);

第一个结果是arr的数组长度,第二个结果是arr[1]的数组长度。
在这里插入图片描述
4.如何遍历数组。
例:

		int[][] arr = new int[][] {{1,2,3},{4,5},{6,7,8},{9,10,11,12}};
		for(int i=0;i<arr.length;i++) {
			for(int j=0;j<arr[i].length;j++) {
				System.out.print(arr[i][j]+" ");
			}
			System.out.println();
		}

结果为:
在这里插入图片描述
5.数据元素的默认初始化值。
我们来看一下:

		int[][] arr1 = new int[3][2];
		System.out.println(arr1[0]);

这是它的结果:
在这里插入图片描述
很明显这是一个地址值,[表示一维数组,I表示int型
我们再来看下另一种情况:

		int[][] arr2 = new int[3][];
		System.out.println(arr2[0]);

结果为null:
在这里插入图片描述
总结:
针对于初始化方式一:比如:int[][]arr=new int[4][3];
外层元素的初始化值为:地址值
内层元素的初始化值为:与一维数组初始化情况同

针对于初始化方式二:比如:int[][]arr=new int[4][];
外层元素的初始化值为:null
内层元素的初始化值为:不能调用,否则报错
6.二维数组的内存解析
在这里插入图片描述
如图:
这里先int[][] arr1 = new int[4][];在栈中申请了arr1,在队中申请了一个二维数组,不过二维数组的元素是引用型,所以默认初始化值为null。
然后,arr1[1] = new int[]{1,2,3}将arr1[1]在队中又申请了一个内存空间,长度为3个int字节,arr1[1]指向它;arr11[2] = new int[4],在队中申请了长度为三个int字节的内存空间,arr1[2]指向它;第四步是赋值操作,类似一维数组。

发布了10 篇原创文章 · 获赞 8 · 访问量 1421

猜你喜欢

转载自blog.csdn.net/weixin_45640609/article/details/104181024