Fork me on GitHub

Java数组和内存控制

1、数组初始化

1.1 Java数组是静态的

   Java语言是典型的静态语言,因此Java的数组是静态的,即当数组被初始化之后,该数组的长度是不可变的。Java程序中的数组必须经初始化才可使用。所谓初始化,就是为数组对象的元素分配内存空间,并为每个数组元素指定初始值,一旦初始化完成,该数组长度就不可改变。

  数组初始化有以下两种方式:

  • 静态初始化:初始化时由程序员显示指定每个数组元素的初始值,由系统决定数组长度。
  • 动态初始化:初始化时程序员只指定数组长度,由系统为数组元素分配初始值。
package test;
import java.lang.reflect.Array;
import java.util.Arrays;

public class Test{
    
    public static void main(String[] tags){
        //静态初始化方式一
        String[] array1 = {"1","2"};
        Arrays.stream(array1).forEach(e->{System.out.print(e + " ");});
        System.out.println();
        //静态初始化方式二
        String[] array2 = new String[]{
            "1","2","3"
        };
        Arrays.stream(array2).forEach(e->{System.out.print(e+" ");});
        System.out.println();
        //动态初始化(引用类型)
        String[] array3 = new String[5];
        Arrays.stream(array3).forEach(e->{System.out.print(e+" ");});
        System.out.println();
        //动态初始化(基本类型)
        int[] array4 = new int[5];
        Arrays.stream(array4).forEach(e->{System.out.print(e+" ");});
    }
}

结果:

盗用书上的图,虽然跟例子对不上,但是数组为引用类型,存储结构如下:

1.2 数组一定要初始化吗

  我们学习Java基础的时候一定记得:使用Java数组之前必须先初始化数组,也就是为数组元素分配内存空间,并指定初始值。实际上,如果真正掌握了Java数组在内存中分配的机制,那么完全可以换一个方式来初始化数组。

  始终记住:Java数组变量是引用类型的变量,它并不是数组对象本身,只要让数组变量指向有效的数组对象,程序中即可使用该数组变量。

  

posted @ 2018-08-11 15:30  爱跑步的星仔  阅读(174)  评论(0编辑  收藏  举报