看视频学习记录,若理解有错,请指正,谢谢!
底层内存结构主要分为:栈,堆,静态域,常量池
栈(stack):存放局部变量,对象的引用;
堆(heap):存放new出来的对象;
静态域:存放静态变量(由static修饰);
常量池:一般存放字符串常量和基本类型常量;
大致上的分布图。
关于数组的复制,在内存中的具体存储,先上一段代码:
int[] array1;
int[] array2;
array1 = new int[]{2,3,5,7,11,13,15,17,19};
array2 = new int[array1.length];
for(int i = 0 ; i < array2.length;i++){
array2[i] = array1[i];
}
for(int i = 0 ;i<array2.length;i++){
if(i%2==0){
array2[i] = i;
}
}
在内存中的存储结构
看一个例题:
public class TEST {
public static void main(String arg[]){
TEST test = new TEST();
test.first();
}
private void first() {
int i = 5;
Value v = new Value();
v.i = 25;
second(v,i);
System.out.println(v + "," + i);
}
private void second(Value v, int i) {
i = 0;
v.i = 25;
Value val = new Value();
v = val;
System.out.println(v.i + " " + i);
}
class Value{
int i = 15;
}
}
输出的结果:

介绍下具体的过程: