方法1
数据类型[] 数组名字 = new 数据类型[长度];
[] : 表示数组,数组有定长特性,长度一旦指定,不可更改
int[] arr = new int[3];
方法2
数据类型[] 数组名 = new 数据类型[]{元素1,元素2,元素3…};
public class Test1 {
public static void methodA(String obj) {
int[] arr = new int[]{1, 2, 3, 4, 5};
Object[] arr1 = new Object[]{obj1,obj2};
//不要和创建对象混了
Object object = new Object();
//数组作为方法参数
Logger.error(getClass(), MessageID.MAS004E, new Object[]{obj1,obj2});
}
}
方法3
数据类型[] 数组名 = {元素1,元素2,元素3…};
int[] arr = {1,2,3,4,5};
注意事项
不要写成了
Object obj3 = new Object[3];
虽然不报错,但它既不是数组,也不是对象,没法遍历
package referenceType3;
public class ArrayTest {
public static void main(String[] args) {
Object[] obj = new Object[]{"a", "b"};
Object[] obj1 = new Object[3];
Object[] obj2 = {"d", "e"};
//错误写法,这样就成了对象
Object obj3 = new Object[3];
System.out.println("obj3 = " + obj3.toString());
System.out.println("");
System.out.println("obj = " + obj);
System.out.println("obj1 = " + obj1);
System.out.println("obj2 = " + obj2);
System.out.println("");
for (int i = 0; i < obj.length; i++) {
System.out.println("obj[i] = " + obj[i]);
}
System.out.println("");
for (int i = 0; i < obj1.length; i++) {
System.out.println("obj1[i] = " + obj1[i]);
}
System.out.println("");
for (int i = 0; i < obj2.length; i++) {
System.out.println("obj2[i] = " + obj2[i]);
}
}
}
编译后Class文件
总结:
1.方式三虽然没有new关键字,但是jvm仍然要在内存中开辟空间。
2.数组的定义和初始化可以分为二个步骤,但是方式三不可以。
//第一种
int[] a;
a = new int[3];//正确
//第二种
int[] b;
b = new int[]{1, 2, 3};//正确
//第三种
int[] c;
c= {1,3,4};//错误
//第三种
int[] d = {1,2,3};//正确
数组的访问
数组名[索引]
//定义存储int类型数组,赋值元素1,2,3,4,5
int[] arr = {1,2,3,4,5};
//为0索引元素赋值为6
arr[0] = 6;
数组遍历:
public static void main(String[] args) {
int[] arr = { 1, 2, 3, 4, 5 };
for (int i = 0; i < arr.length; i++) {
System.out.println(arr[i]);
}
}