数组

数组的定义格式

  • 动态初始化

    1
    2
    3
    4
    5
    //数据类型 [] 数组名 = new 数据类型[数组长度];
    int [] array = new int[300];
    /*或者
    int [] array;
    array = new int[300];*/
  • 静态初始化

    1
    2
    3
    4
    5
    //数据类型 [] 数组名 = new 数据类型[]{元素1,元素2,...};
    int [] arrayA = new int[]{1,2,3};
    /*或者
    int [] arrayA;
    arrayA = new int[]{1,2,3};*/
  • 省略格式的初始化

    1
    2
    3
    4
    5
    //数据类型 [] 数组名 = {元素1,元素2,...};
    int [] arrayB = {1,2,3};
    //下面这种写法是错误的
    /*int []arrayB;
    arrayB = {1,2,3};*/

数组默认值

  • 动态初始化数组,其中每个元素的默认值如下

    数据类型 默认值
    整数类型 0
    浮点类型 0.0
    字符类型 ‘\u000’(不可见字符)
    布尔类型 false
    引用类型 null

数组内存分布

  • 在方法内定义的数组,在栈区存放该数组的首地址,在堆区存放该数组元素的内容。
  • 例如查找array[1]的内容,先在栈区查找到该数组的首地址,然后再堆区按照序号获取元素值

  • 若将数组重新进行new,那么再栈区存放的首地址将发生变化

数组初始化空指针异常

  • 所有的引用类型量,都可以赋值为一个null值,数组是引用类型
  • 数组必须进行new初始化,才能使用其中的元素
  • 如果只是给数组赋初值为null,那么访问时会发生空指针异常(NullPointerException)

数组作为方法参数

  • 数组作为方法参数,传递的是数组的地址值
1
2
3
4
5
6
7
8
9
10
public class Hello {
public static void main(String[] args) {
int[] arrayA = new int[]{1, 2, 3};
System.out.println(arrayA);
print(arrayA);
}
public static void print(int[] arrayA) {
System.out.println(arrayA);//数组地址
}
}

数组输出

  • Java封装了Arrays
1
2
int[] arrayA = new int[]{1, 2, 3};
System.out.println(Arrays.toString(arrayA));