JAVA基础篇(07):引用数据类型之数组

引用数据类型-数组
引用数据类型包含类、接口和数组类型,还有一种特殊的null类型。这里我们讲讲数组。

数组的声明
一个数组只能存储一种类型的数据,如int型数组只能存int型数据。
数组是一种引用数据类型,如int是基本数据类型,但int[ ]就是引用数据类型了。
在定义数组三要素:变量类型,数组名,数组长度。

Java中声明一个数组的方式有两种:

1.  type[ ] arrayName
2.  type arrayName[ ]

如:int [ ] intArr,int intArr[ ]。


数组的初始化
在使用数组之前需要进行初始化,不然会报空指针异常。
“初始化”,其实听起来高大上,简单理解起来就是“第一次赋值”的意思。也就是我们不光需要声明一个数组,还要告诉计算机我们这个数组里面都存了什么值。初始化一个数组的方式有如下两种:

1.静态初始化:由程序员显式指定每个数组元素的值,由系统决定数组长度。
方法有两种,如下:
①arrayName = new type[ ] (元素1,元素2,元素3……)
实例如下:

public static void main(String[] args) {
		int []arry;
		arry = new int[] {1,5,7,8,9};
	}

即声明了一个包含5个元素:1,5,7,8,9的int型数组。
②简化的静态初始化方法,直接将数组定义和初始化在一行代码里完成:

int []arry={1,5,7,8,9};

以上两种方式都是可以的。

2.动态初始化:初始化时,程序员只指定数组长度,由系统为数组元素分配初值。
语法为:arrayName = new type[length];

//同时完成数组的定义和初始化,使用动态初始化语法:
int[] prices=new int[5];
//初始化数组时元素的类型是定义数组时元素类型的子类:
Object[] names=new String[5];

完成上述初始化之后,系统会为数组元素赋上一个初始值,规则如下:

数组元素的类型为byte short int long时,初始化后数组元素值为 0;
数组元素的类型为float double时,初始化后数组元素值为0.0;
数组元素的类型为boolean时,初始化后数组元素值为false;
数组元素的类型为char时,初始化后数组元素值为\u0000;
数组元素的类型为引用数据类型(类,接口和数组)时,初始化后数组元素值为null。

此时如果把数组内容都打印出来,就全部都是初始化之后的元素值。


使用规则:
如果在创建数组的时候,知道数组中应该存储什么数据,则采用静态初始化方法。
如果在创建数组的时候,无法预测到数组中存储什么元素,只实现开辟空间,则使用动态初始化。


数组基本操作·访问数组
数组最常用的操作就是访问数组,包括对数组元素赋值,和取出数组元素的值。
我们通过在[ ]中写入数字来表示我们要访问的是数组的第几个元素,这个数字就叫做索引。Java语言的数组索引是从0开始的,也就是第一个数组元素的索引值为0,最后一个元素的索引值为数组长度(array.length)-1。
示例代码如下:

public class Test {
	public static void main(String[] args) {
		Object[] names=new String[5];//声明一个数组并初始化
		System.out.println(names[1]);
		names[4]="Sports";
		System.out.println(names[4]); //打印赋值后的最后一个元素
	}
}

上述代码中我们的数组下标最大为4,如果写成5,则会发生数组越界,代码运行时将出现异常:

public class Test {
	public static void main(String[] args) {
		Object[] names=new String[5];//声明一个数组并初始化
		System.out.println(names[1]);
		names[5]="Sports";
		System.out.println(names[5]); 
	}
}

打印数组
数组提供了一个length属性,可以获取数组长度,从而通过循环来遍历数组的每个数组元素:

public class Test {
	public static void main(String[] args) {
		Object[] names=new String[5];//声明一个数组并初始化
		names[0]="小明";
		names[1]="小胡";
		names[2]="小田";
		names[3]="小刚";
		names[4]="铁柱";
		for(int i=0;i<names.length;i++) {
			System.out.println(names[i]);
			//请思考这里面的names.length的值为多少?
		}
	}
}

二维数组
Java中所谓的二维数组,其实就是一个一维数组,只不过里面的元素都不是整数,字符串啥的,而是数组而已。
声明一个二维数组,有如下两种方式:
(其实和一维数组一样,方括号的位置也可以在arrayName之前或之后)

String ar1[]= {"第一个","二维"};
String ar2[] = {"数","组"};
String arr[][] = {ar1,ar2};//先声明两个一维数组,然后把一维数组作为数组元素添加到数组arr[][]中。

String[][] arr1 = {{"第一个","二维"},{"数","组"}};

打印一个二维数组,则需要使用如下的嵌套循环方式:

for(int i=0;i<arr.length;i++) {
	for(int j=0;j<arr[i].length;j++)
	System.out.print(arr[i][j]);
	if(i==arr.length-1) {
		System.out.print("\n");
	}
}

使用两个循环控制变量i和j,按顺序先打印二维数组中第一个一维数组中的所有元素,再打印第二个一维数组中的所有元素……

原创文章 84 获赞 86 访问量 14万+

猜你喜欢

转载自blog.csdn.net/qq_36396763/article/details/100543703