Java数组

参考自《Java编程思想 第4版》(Thinking in Java):Java提供了一系列的容器来供我们容纳和操作对象。

数组代表一系列对象或基本类型,所有所有相同的类型都封装到一起——采用一个统一的标识符名称。数组的定义和使用是通过方括号索引运算符进行的([])

int[]  a1;

也可以采用下面的方法:

int a2[];

数组和其他集合的区别在于:效率和类型。对于Java,保存和访问一系列对象的最有效方法可以说是数组。因为数组代表的是一个简单的线性序列,所以相对于其他集合,数组的访问速度特别快,但是代价却是数组的大小是固定的。

  • 数组初始化
public static void main(String[] args) {
		// 直接赋值
		int a1[] = {1,2,3,4,5};
		int a2[];
		
		a2 = a1;
		for(int i = 0; i < a1.length; i++) {
			a2[i]++;
		}
		
		for(int i = 0; i < a1.length; i++) {
			System.out.println("a1[" + i + "] = " + a1[i]);
		}
	}
输出结果:
a1[0] = 2
a1[1] = 3
a1[2] = 4
a1[3] = 5
a1[4] = 6

我们看到虽然改变的是a2中的值,但是输出的a1数组中的值却发生了改变。这是因为我们执行 a2 = a1;  这段代码时,只是将a1所指向的数组对象的地址传递给了a2,而不是a1的内容。
在程序编写期间,如果我们不知道自己需要多大的数组,可以采用 new 这一关键词进行数组的创建。
public static void main(String[] args) {
		testArray();
	}

	
	public static void testArray() {
		// 声明数组
		int a[];
		// 随机生成一个数,模拟未知的数组大小
		int length = (int) (Math.random() * 10);
		a = new int[length];
		System.out.println("length = " + length);
		for(int i = 0; i < length; i++ ) 
		{
			System.out.println("a1[" + i + "] = " + a[i]);
		}
	}

结果:
// 每次执行的结果不一样,因为大小是随机数产生的
length = 7
a1[0] = 0
a1[1] = 0
a1[2] = 0
a1[3] = 0
a1[4] = 0
a1[5] = 0
a1[6] = 0
我们发现输出的结果中为0,这是因为在新创建的时候,基本数据类型的数组元素会自动初始化成“空”值(对于数值,空值就是零;对于 char,它是null; 
 
 
 
而对于boolean,它却是 false)。当然,数组可能已在相同的语句中定义和初始化了,如下所示:
int[] a = new int[20];
 
 
 
 
 
  • 多维数组

在Java里可以很方便的创建多维数组:

public class MultiDimArray {
	
	static Random rand = new Random();
	
	static int pRand(int mod) {
		return Math.abs(rand.nextInt()) % mod + 1;
	}
	
	public static void main(String[] args) {
		// 二维数组
		int[][] a1 = {
				{ 1, 2, 3, },
				{ 4, 5, 6, },
			};
		for(int i = 0; i < a1.length; i++)
			for(int j = 0; j < a1[i].length; j++)
				prt("a1[" + i + "][" + j +"] = " + a1[i][j]);
		// 三维数组,固定大小
		int[][][] a2 = new int[2][2][4];
		for(int i = 0; i < a2.length; i++)
			for(int j = 0; j < a2[i].length; j++)
				for(int k = 0; k < a2[i][j].length; k++)
					prt("a2[" + i + "][" +j + "][" + k +"] = " + a2[i][j][k]);
		// 三维数组,动态指定大小
		int[][][] a3 = new int[pRand(7)][][];
		for(int i = 0; i < a3.length; i++) {
			a3[i] = new int[pRand(5)][];
			for(int j = 0; j < a3[i].length; j++)
				a3[i][j] = new int[pRand(5)];
			}
			for(int i = 0; i < a3.length; i++)
				for(int j = 0; j < a3[i].length; j++)
					for(int k = 0; k < a3[i][j].length; k++)
						prt("a3[" + i + "][" + j + "][" + k + "] = " + a3[i][j][k]);
				// Array of non-primitive objects:
				Integer[][] a4 = {
					{ new Integer(1), new Integer(2)},
					{ new Integer(3), new Integer(4)},
					{ new Integer(5), new Integer(6)},
				};
				for(int i = 0; i < a4.length; i++)
					for(int j = 0; j < a4[i].length; j++)
						prt("a4[" + i + "][" + j + "] = " + a4[i][j]);
				Integer[][] a5;
				a5 = new Integer[3][];
				for(int i = 0; i < a5.length; i++) {
					a5[i] = new Integer[3];
					for(int j = 0; j < a5[i].length; j++)
						a5[i][j] = new Integer(i*j);
				}
				for(int i = 0; i < a5.length; i++)
					for(int j = 0; j < a5[i].length; j++)
						prt("a5[" + i + "][" + j + "] = " + a5[i][j]);
		}
		static void prt(String s) {
			System.out.println(s);
		}
	}





  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值