参考资料:
http://www.runoob.com/java/java-array.html
http://developer.51cto.com/art/200906/128274.htm
https://docs.oracle.com/javase/7/docs/api/java/util/Arrays.html----oracle官方
http://mouselearnjava.iteye.com/blog/1985990---asList源码解读
http://blog.csdn.net/lzm18064126848/article/details/53823610---asList陷阱
http://brightmoon.blog.51cto.com/8128325/1317517---具体例子
相关文章:
http://blog.csdn.net/lzm18064126848/article/details/53785743---Java中Arrays类的两个方法:deepEquals和equals
http://blog.csdn.net/lzm18064126848/article/details/53785491---这个主要是用于在类中判断重写equals()
http://blog.csdn.net/lzm18064126848/article/details/53784223---System.arraycopy
1.
一维:
dataType[] arrayRefVar = new dataType[arraySize];
二维:
type arrayName = new typ[arraylenght1][arraylenght2];
....n维
2.
初始化:
动态初始化:数组定义与为数组分配空间和赋值的操作分开进行;
静态初始化:在定义数字的同时就为数组元素分配空间并赋值;
默认初始化:数组是引用类型,它的元素相当于类的成员变量,因此数组分配空间后,每个元素也被按照成员变量的规则被隐式初始化。
循环可以使用for或者是foreach
数组作为函数参数、也可以作为返回值
3.
Arrays 类
java.util.Arrays 类能方便地操作数组,它提供的所有方法都是静态的。
具有以下功能:
转换成List:通过asList方法。
查找数组元素:通过 binarySearch 方法能对排序好的数组进行二分查找法操作。
复制数组: copyOf及copyOfRange方法
String[] names2 = { "Eric", "John", "Alan", "Liz" };
//[Eric, John, Alan]
String[] copy = Arrays.copyOf(names2, 3);
//[Alan, Liz]
String[] rangeCopy = Arrays.copyOfRange(names2, 2,names2.length);
给数组赋值:fill()
对数组排序:sort()
比较数组:equals()
打印数组内容:
一维数组:toString()
二维数组:deepToString() 对于高维数组equals也是使用deepequals
数组为空和数组长度为0的区别
两者如果在一句代码中,则要先判断是否为空,否则可能会出现空指针异常。
例子:
if(array == null || 0 == array.length) {...} // 这种写法正确,因为执行到 “0 == array.length”则说明数组不为空,不会产生空指针异常。
if(0 == array.length || array == null) {...} // 这种写法可能会产生空指针异常。
例:
int[] n; //只声明了数组变量;
int[] nil = null; //声明数组变量,并赋值 null,nil是一个数组类型的空引用,不指向任何对象;
int[] zero = new int[0]; //声明并创建一数组对象,长度是0;
对于上面三条语句,一个比一个做的动作多,系统占用也是后面的多:
语句一变量还没初始化,打印 n 会出错:“可能尚未初始化变量 n”;
语句二虽已初始化,打印“nil.length”会出现异常:NullPointerException;
语句三打印“nil.length”是0,数组内还没有元素。
假设一个方法返回一个数组,如果它返回null,则调用方法必须先判断是否返回null,才能对返回数组进一步处理,而如果返回空数组,则无须null引用检查。
鉴于此,返回数组的方法在没有结果时我们通常返回空数组,而不是null,这样做对于函数调用者的处理比较方便。