JAVA——数组与内存控制

//基于疯狂JAVA的笔记

数组与内存控制

静态初始化和动态初始化
静态:初始化时指定每个数组的初始值
无需指定数组长度,指定数组元素即可


动态:初始化时由程序员指定长度,再由系统为数组元素分配初值
只需指定数组长度,数组元素由系统分配

public class RWX
{
    public static void main(String[] args){
    //静态
    String[] books = new String[]
    {
        "活着",
        "追影子的人",            //注意有逗号
        "四六级必备单词"
    };
    //静态简化
    String[] names = 
    {
        "习大大",
        "彭丽媛"
    };
    //动态
    String[] strArr = new String[5];
    System.out.println("第一个数组的长度" + books.length);//访问数组长度
    System.out.println("第二个数组的长度" + names.length);
    System.out.println("第三个数组的长度" + strArr.length);
    }
}

不要同时使用静态和动态初始化,也就是说,不要在对数组初始化时,既指定数组的长度,又为数组元素赋初值
JAVA的数组变量是一种引用型的变量,数组变量并不是数组本身,他只是指向堆内存中的数组对象。因此可以改变一个数组变量所引用的数组,这样可以造成数组长度改变的假象

//让books,strArr数组变量指向names所引用的数组
    books = names;
    strArr = names;
    System.out.println("books数组长度为:" + books.length); 
    System.out.println("strArr数组长度为:" + books.length); 
    books[1] = "胡景涛";
    System.out.println("books数组的第二个元素为" + books[1]); 

这时,上述两个数组都指向了books数组变量引用的数组
books数组的长度不变
其他两个数组长度与books统一。
而这两个数组变量由于未被引用,成了垃圾,等待垃圾回收机制回收

猜你喜欢

转载自blog.csdn.net/android_xpp/article/details/82745375