Java基础学习笔记(五)—— 数组

Java基础学习笔记(五)—— 数组

Life was like a box of chocolates, you never know what you’re gonna get.

| @Author:TTODS


一维数组

当数组中每个元素都只带一个下标时,这种数组就是“一维数组”。数组是引用数据类型,引用数据类型在使用之前一定要做两件事情:声明和初始化。

一维数组的声明

java中变量声明有两种方式

int[] nums1; //元素数据类型[] 数组变量名
int nums2[]; //元素数据类型 数组变量名[]

值得注意的是:①在java中给推荐使用第一种方法,因为其更符合面向对象的思想,将元素数据类型[]看作是一个整体类型,即数组类型。而后者常用于C等语言的数组声明。②数组声明完成后,JVM还没有给元素分配内存空间。

初始化

数组初始化的过程就是为数组的每一个元素分配内存空间,并为每一个元素提供初始值。初始化之后数值的长度就确定下来不能变化了。
值得注意的是:①有些计算机语言虽然提供了可变类型数组,它的长度是可变的,这种数组本质上是创建了一个新的数组对象,并非是原始数组的长度发生了变化

静态初始化

已知数组的长度及数组中每个元素的值时,可以使用数组的静态初始化。

int[] nums = {1,2,3,4,5,6,7};//数组的静态初始化用{value1,value2,value3···}的形式初始化数组。
for(int num:nums) {
	System.out.print(num+" ");
}

输出:

1 2 3 4 5 6 7
动态初始化

用new运算符分配指定长度的内存空间

int[] nums = new int[20];	//为nums数组 分配可以存放20个int数据的内存空间
	nums[0] = 1;
	System.out.printf("%6d ",nums[0]);
	for(int i=1;i<20;i++) {
		nums[i] = 2*nums[i-1];
		System.out.printf("%6d ",nums[i]);
		if(i==9) System.out.println();
	}

输出

     1      2      4      8     16     32     64    128    256    512 
  1024   2048   4096   8192  16384  32768  65536 131072 262144 524288 

值得注意的是:我们用new为数组分配了内存空间后,在赋值前,数组的元素内容是数组类型的默认值,例如int类型的默认值是0

int[] nums = new int[20];	//为nums数组 分配可以存放20个int数据的内存空间
for(int i:nums)
		System.out.printf("%3d ",i);

输出

  0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0 

其他类型的默认值如下表:

基本类型 默认值
byte 0
short 0
int 0
long 0L
float 0.0f
double 0.0d
char ‘\u0000’
boolean false
引用 null

多维数组

多维数组实际上是一维数组的特殊情况,即一维数组的每个元素都是数组。比如二维数组的每个元素都是一个一维数组。
下面以二维数组为例:

二维数组的声明:
int[][] intArray0;
int[] intArray1[];
int intArray2[][];
二维数组的初始化:
静态初始化
//二维数组的静态初始化
int[][] intArray = {
		{1,2,3,4},
		{2,3,4,1},
		{3,4,1,2},
		{4,1,2,3}};
//二维数组的遍历,注意第一层循环里元素类型是int[]
for(int[] nums :intArray) {
	for(int num:nums)
		System.out.printf(" %d ",num);
	System.out.println();}
	}

输出:

 1  2  3  4 
 2  3  4  1 
 3  4  1  2 
 4  1  2  3 
动态初始化
int[][] intArray = new int[4][4];
	for(int i =0;i<4;i++) {
		for(int j=0;j<4;j++) {
			intArray[i][j] = i+j;
			System.out.printf(" %d ",intArray[i][j]);
		}
		System.out.println();
	}

输出:

 0  1  2  3 
 1  2  3  4 
 2  3  4  5 
 3  4  5  6 

不规则数组

因为多维数组是数组的数组,但是子数组的长度可以不一样,于是就有了不规则数组。

int Array[][] = {
		{1},
		{1,1},
		{1,1,1},
		{1,1,1,1}};
for(int[] nums:Array) {
	for(int num:nums)
		System.out.printf(" %d ", num);
	System.out.println();
}

输出

 1 
 1  1 
 1  1  1 
 1  1  1  1 

用for-each语句遍历不规则数组是不错的选择


- THE END -
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章