//基于疯狂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统一。
而这两个数组变量由于未被引用,成了垃圾,等待垃圾回收机制回收