Java语言支持两种语法格式来定义数组:
数组是一种引用类型的变量,因此使用它定义一个变量时,仅仅表示定义了一个引用变量(也就是定义了一个指针),这个引用变量还未指向任何有效的内存,因此定义数组时不能指定数组的长度。而且由于定义数组只是定义了一个引用变量,并未指向任何有效的内存空间,所以还没有内存空间来储存数组元素,因此这个数组也不能使用,只有对数组进行初始化后才能使用。
定义数组时,不能指定数组的长度
type[] arrayName;
type arrayName[];
数组的初始化有如下两种方式:
- 静态初始化:
初始化时,由程序员显式指定每个数组元素的初始值,由系统决定数组长度。
//定义格式
arrayName = new type[]{element1,element2,element3,.....}
arrayName ={element1,element2,element3,.....}
//简化静态初始化
int[] a = {5, 6, 8, 20};
//例:
//定义一个int数组类型的变量,变量名为intArr
int[] intArr;
//使用静态初始化,初始化数组时只指定数组元素的初始值,不指定数组长度
intArr = new int[]{5, 6, 8, 20};
//定义一个object数组类型的变量,变量名为objArr
Object[] objArr;
//使用静态初始化,初始化数组时数值元素的类型是
//定义数组时数组元素类型的子类
objArr = new String[]{"java", "赵瑜"};
Object[] objArr2;
//使用静态初始化
objArr2 = new Object[]{"java", "赵瑜"};
- 动态初始化:
初始化时,程序员只指定数组长度,由系统为数组元素分配初始值。
//格式
//arrayName = new type[length];
int[] prices = new int[10];
Object[] books = new String[4];
指定初始化时,系统按如下规则分配初始值。
- 数组元素的类型是基本类型中的整数类型(byte,short,int 和long),则数组元素的值是0。
- 数组元素的类型是基本类型中的浮点类型(float,double),则数组元素的值是0.0。
- 数组元素的类型是基本类型中的字符型(char),,则数组元素的值是’\u0000’。
- 数组元素的类型是基本类型中的布尔类型(boolean),则数组元素的值是false。
- 数组元素的类型是引用类型(类,接口和数组),则数组元素的值是null。
foreach 循环
//foreach循环格式如下
for (type variableName: array | collection) {
//variableName自动迭代访问每个元素
}
使用方法
/**
* @author 稷下长安™
* 常见的数组
* ctrl +alt + l
* 格式化代码
*/
public class ArrayTest {
public static void main(String[] args) {
String[] fairys = {
"刘亦菲是神仙姐姐",
"神仙姐姐是刘亦菲",
"刘亦菲永远的神"
};
//使用foreach 循环来遍历数组元素
//其中fairy会自动迭代每个数组元素
for (String fairy:fairys) {
System.out.println(fairy);
}
}
}
//输出:
刘亦菲是神仙姐姐
神仙姐姐是刘亦菲
刘亦菲永远的神
注意:
使用时不要对数组进行赋值,虽然语法是允许的
public class ArrayTest {
public static void main(String[] args) {
String[] fairys = {
"刘亦菲是神仙姐姐",
"神仙姐姐是刘亦菲",
"刘亦菲永远的神"
};
//使用foreach 循环来遍历数组元素
//其中fairy会自动迭代每个数组元素
for (String fairy:fairys) {
fairy = "赵瑜是憨憨";
System.out.println(fairy);
}
System.out.println(fairys[2]);
}
}
//输出
赵瑜是憨憨
赵瑜是憨憨
赵瑜是憨憨
刘亦菲永远的神
使用foreach循环迭代数组元素,并不能改变元素的值,因此不要对foeach循环变量进行赋值