代码改变世界

java collections读书笔记(2)Arrays

2013-06-12 11:47  很大很老实  阅读(382)  评论(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的引用。