java collections读书笔记(2)Arrays
2013-06-12 11:47 很大很老实 阅读(383) 评论(0) 编辑 收藏 举报在java语言中,Arrays是唯一一个内置的collection。其内部存储了一系列的元素,可以通过index或者position进行方式。
Array是Objects的子类。
Arrays基础:
举一个简单的例子,就是main方法的输入参数:
public class ArrayArgs {
public static void main (String args[]) {
for (int i=0, n=args.length; i<n; i++) {
System.out.println("Arg " + i + ": " + args[i]);
}
}
}
由于array的index只能是整数,不能是long,因此,最大只能是2的31次方。
如果超过了数组的范围访问,则会触发ArrayIndexOutOfBoundsException异常,这个异常是IndexOutOfBoundsException的子异常。
幸运的是,这个异常是运行时异常,不一定需要try catch处理,具体看:http://www.cnblogs.com/aomi/archive/2013/06/12/3132508.html
声明和创建数组:
array的元素可以是一些基础类型,比如:
int[] wcf;
这里需要注意的是:The form int[] var1, var2; will declare
two variables that are int arrays, whereas int []var1, var2; or int var1[], var2; will declare one
int array and another just of type int.
创建数组的时候,就要指定大小,可以有这么几种方式:
int variable[] = new int[10];
or
int[] createArray(int size) {
return new int[size];
}
public class welcome {
public static void main(String[] args)
{
int[] a=new int[10];
int[] b=createArray(10);
for(int i=0;i<a.length;i++)
{
a[i]=i;
}
b=a;
for(int i=0;i<b.length;i++)
{
System.out.println("b["+i+"]:" +b[i]);
}
a[5]=10;
for(int i=0;i<b.length;i++)
{
System.out.println("b["+i+"]:" +b[i]);
}
}
static int[] createArray(int size){
return new int[size];
}
}
结果是:
b[0]:0
b[1]:1
b[2]:2
b[3]:3
b[4]:4
b[5]:5
b[6]:6
b[7]:7
b[8]:8
b[9]:9
b[0]:0
b[1]:1
b[2]:2
b[3]:3
b[4]:4
b[5]:10
b[6]:6
b[7]:7
b[8]:8
b[9]:9
如果数组大小是负数,则会出发NegativeArraySizeException异常。可是,如果为0,则是允许的。
上图说明数组在内存中的存放方式。
arrays of objects:array只存放对object的引用。