数组可以用来存储一个元素个数固定且元素类型相同的有序集。
声明一个数组变量时并不在内存中给数组分配任何空间,只是创建一个对数组的引用的存储位置。如果变量不包含任何对数组的引用,那么这个变量的值为null。除非数组已经被创建,否则不能给它分配任何元素。
一个数组变量看起来似乎存储了一个数组,但实际上存储的是指向数组的引用。
数组被创建后,其元素被赋予默认值。数值型基本数据类型的默认值为0,char型的默认值为'\u0000',boolean型的默认值为false
对于char[]类型的数组,可以使用一条打印语句打印。
foreach循环
foreach循环,不适用下标变量就可以顺序遍历整个数组。
for(elementType element: array){
// process the element
}
数组的复制
list2 = list1
如果使用赋值语句,并不能将list1引用的数组内容复制给list2,而只是将list1的引用值复制给了list2。list2和list1指向同一个数组,则list2原先引用的数组不能再引用,会被JVM收回。在Java中可以使用赋值语句复制基本数据类型的变量。
Java按值传递的方式将实参传递给方法。
- 对于基本数据类型参数,传递的是实参的值。
- 对于数组类型参数,参数值是数组的引用,给方法传递的也是引用。所以如果改变方法中的数组,可以看到方法外的数组也会变化。
数组在Java中是对象,JVM将对象存储在堆这个内存区域中。
可变长参数列表
可以把类型相同但个数可变的参数传递给方法。声明方法如下:
typeName...parameterName(类型名...参数名)
只能给方法中指定一个可变长参数,并且该参数必须是最后一个参数,任何常规参数必须在它之前。JAVA将可变长参数当成数组对待。
Arrays类
java.util.Arrays类包含各种静态方法,用于实现数组的排序、查找、比较、填充、返回数组的字符串表示。
- 排序:sort(可以指对数组的部分元素排序)
- 检测是否相等:equals
- 填充:fill,可以填充整个或部分数组
- toSreing:返回一个字符串
命令行参数
向main方法传递字符串
从命令行给main方法传递字符串参数:
java TestMain arg0 arg1 arg2
如果字符串包含空格,必须使用双引号括住。在调用main方法时,Java解释器会创建一个数组存储命令行参数,然后将该数组的引用传递给args。
多维数组
二维数组的每一个元素都是一个一维数组,均可以获得其长度。
锯齿数组:每一行本身就是一个数组,各行的长度可以不同。
注意语法 new int[][]是错误的。
二维数组由一个一维数组的数组组成,而一个三维数组可以认为是由一个二维数组的数组所组成。