一、概念与特点
概念: 数组是相同类型数据的有序集合。数组描述的是相同类型的若干个数据,按照一定的先后次序排列组合而成。其中,每一个数据称作一个元素,每个元素可以通过
一个索引(下标)来访问它们。
特点: 1. 长度是确定的。数组一旦被创建,它的大小就是不可以改变的。
2. 其元素必须是相同类型,不允许出现混合类型。
3. 数组类型可以是任何数据类型,包括基本类型和引用类型。
【注】数组变量属引用类型,数组也可以看成是对象,数组中的每个元素相当于该对象的成员变量。
数组本身就是对象,Java中对象是在堆中的,因此数组无论保存原始类型还是其他对象类型,数组对象本身是在堆中存储的。
二、声明与初始化
2种声明方式 : type[] arr_name; type arr_name[];
【注】1. 声明的时候并没有实例化任何对象,只有在实例化数组对象时,JVM才分配空间,这时才与长度有关。
2. 声明一个数组的时候并没有数组真正被创建。
3. 构造一个数组,必须指定长度。
参考:
【代码示例】
1、 普通类型数组
1 public class Test_0311_01 2 { 3 public static void main(String[] args) 4 { 5 int arr[]= new int[10];// 等价于 int arr[]=null; 声明一个名叫arr的int型数组 arr = new int[10]; 给数组arr分配空间 6 for(int i=0;i<arr.length;i++) 7 { 8 arr[i]=2*i+1; 9 System.out.println(arr[i]); 10 } 11 12 } 13 }
2、与引用类型数组
1 class User 2 { 3 private int id; //思路1:去掉private,不加输出getInfo()方法可以正确输出。输出方式是System.out.println(user_arr[i].id); 4 private String name; 5 6 public User(int id,String name){//构造方法重载 7 super(); 8 this.id=id; 9 this.name=name; 10 } 11 12 public void getInfo(){//思路2:使用getInfo()方法 13 System.out.println("学号:"+id+" 姓名:"+name); 14 } 15 } 16 17 public class Test_0311_02 18 { 19 public static void main(String[] args) 20 { 21 User user_arr[]= new User[2]; //若把2改为10,即开辟了长度为10的数组,但实际只给2个赋值,可以输出但会报异常即空指针异常 22 //Exception in thread "main" java.lang.NullPointerException at Test_0311_02.main(Test_0311_02.java:21) 23 user_arr[0]=new User(101,"李白");//user_arr[0]中存的是新建对象的地址 24 user_arr[1]=new User(102,"杜甫"); 25 for(int i=0;i<user_arr.length;i++) 26 user_arr[i].getInfo(); //再次注意:千万不能System.out.println()中写无返回值的方法,比如getInfo()。直接用对象调用方法 27 28 } 29 }