------<a href="http://www.itheima.com" target="blank">Java培训、Android培训、iOS培训、.Net培训</a>、期待与您交流! -------
(1)数组
Java 中的数组跟C/C++这些语言中的数组的语法结构很相似。但是,Java 去掉了C/C++,中的可以通过[]或者使用指针来访问元素的功能。这在C/C++中被普遍接受的功能虽然强大,但是也让Bug 横行的软件更容易出现。因为Java 不支持这种直接通过指针来操纵数据,这类的Bug 也被消除了。
(2)声明但不分配空间
声明一个数组不需分配任何存储空间,它仅仅是代表你试图创建一个数组。跟C/C++声明一个数组的明显区别就是空间的大小没有被特别标识。因此,下面的声明将会引起一个编译期错误。
int num[5];
一个数组的大小将在数组使用new 关键字真正创建时被给定,例如:
int num[];
num = new int[5];
你可以认为命令new 的使用跟初始化一个类的实例的使用是类似的。例子中数组名num
说明数组大小可以是任意大小的整形数据。
(3)同时声明和创建数组
这个例子也可以使用一行语句完成:
int num[] = new int[5];
方括号也可以放在数据类型后面或者数组名后面。下面的两种都是合法的:
int[] num;
int num[];
你可以读作:
一个名字为num 的整型数组
一个数据类型为整型名字为num 的数组
(4)Java 和C/C++数组的比较
Java 数组知道它的大小,并且Java 语言支持对意外的移动到数组末端的保护。如果你从Visual Basic 背景下转到Java 开发,并且还不习惯于一直从0 开始计数,这点是很方便的。这也可以帮你避免一些在C/C++程序中很难发现的错误,例如移动到了数组末端并且指向了任意内存地址。
例如,下面的程序会引起一个ArrayIndexOutOfBoundsException 异常。
int[] num= new int[5];
for(int i =0; i<6; i++){
num[i]=i*2;
}
访问一个Java 数组的标准习惯用法是使用数组的length 成员
例如:
int[] num= new int[5];
for(int i =0; i<num.length; i++){
num[i]=i*2;
}
(5)数组知道它的大小
假如你跳过了C/C++的对照,Java 中的数组总是知道它们的大小,这表现在length 字段。因此,你可以通过下面的语句动态移动数组:
int myarray[]=new int[10];
for(int j=0; j<myarray.length;j++){
myarray[j]=j;
}
注意,数组有length 字段,而不是length()方法。当你开始用一组字符串的时候,你会像s.length()这样使用字符串的length 方法。数组中的length 是域(或者说特性)而不是方法。
(6)Java 数组和Visual Basic 数组的对照
Java 中的数组总是从0 开始。如果使用了Option base 声明,Visual Basic 可能从1 开始。
Java 中没有跟Visual Basic 中可以使你不删除内容就改变数组大小的redim preserve 命令等价的语句。但你可以建立一个同样大小的新数组,并且复制现有元素到里面。
一个数组声明可以有多个方括号。Java 形式上不支持多维数组,但是它可以支持数组的数组,就是我们常说的嵌套数组。
C/C++中那样的多维数组和嵌套数组的最主要区别就是,每个数组不需要有同样的长度。如果你将一个数字当作一个矩阵,矩阵不一定是矩形。按照Java 语言规范:
“括号里的数指明了数组嵌套的深度”
在其他语言中,就要跟数组的维度相符。因此,你可以建立一个类似于下面的形式的二
维数组:
int i[][];
第一个维度可以匹配X,第二个维度可以匹配Y。
(7)声明和初始化相结合
一个数组可以通过一个语句来创建并初始化,这就代替了通过数组循环来初始化的方式。这种方法很适合小数组。下面的语句创建了一个整型数组并且赋值为0 到4:
int k[]=new int[] {0,1,2,3,4};
注意,你没有必要确定数组元素的数量。你可能在测验中被问到下面的语句是不是正确的问题:
int k=new int[5] {0,1,2,3,4} //Wrong, will not compile!
你可以创建数组的同时确定任何数据类型,因此,你可以创建一个类似于下面形式的字符串数组:
String s[]=new String[] {"Zero","One","Two","Three","Four"};
System.out.println(s[0]);
这句将会输出String[0]。
(8)数组的默认值
不同于其他语言中的变量在类级别创建和本地方法级别创建有不同的动作,Java 数组总是被设定为默认值。
无论数组是否被创建了,数组中的元素总是设为默认值。因此,整型的数组总是被置0,布尔值总是被置false。下面的代码编译时不会出错,并且输出0。
public class ArrayInit{
public static void main(String argv[]){
int[] ai = new int[10];
System.out.println(ai[0]);
}
}