java内存管理
本小白也处于学习阶段,任何错误表述请各位路过大神批评指正,感激不尽。还是那句话,千万不要喷哦,尤其不要骂脏话,谢谢合作
数组及其内存管理
知识点总结:
1.java的数组是静态的,java数组被初始化后,该数组对象在堆中所占的内存空间是固定不变的。
2. 数组变量和数组对象:所谓数组变量是一个存储在栈上的引用,默认初始化为null。当完成初始化后,该数组变量指向堆的一块固定内存区域,而这块内存区域才是真正意义上的数组对象存取的地方,有关变量或对象值存储在该部分区域。
3. 根据上面java数组的理解,数组常用初始化操作有以下几种:
/*方法一*/
String[] name = newString[]{
"张三","李四","王五"
};
/*方法二*/
String[] name = {
"张三","李四","王五"
}
/*方法三*/
String[] name = newString[3];
/*方法四*/
String[] temp;
temp = name;//将引用直接指向name所指内存块
上面的初始化方法待补充。
4. 基本类型数组初始化和引用数组初始化
基本数组初始化比较简单,直接位每个数组变量在堆中分配空间并初始化即可;引用数组变量初始化后,其数组对象空间是null,也即其数组对象仍然是一个引用类型,这就有点像C/C++中的指针的指针含义。然后每个数组对象需要指向实际的对象实例,不过java隐藏了类似于C/C++中繁琐的指针操作,所有只需要正常new取得对象实例即可。
上图吧,虽然很简单,但挺重要的。
对应的源代码如下所示:
public Person(){
......
}
Person[] students =new Person[2];//图1
Person chen = newPerson();//图2
Person suo = newPerson();//图2
students[0] = chen;//图3
students[1] = suo;//图3