yogjun / myblog

0 stars 0 forks source link

引用传递和值传递 #17

Closed yogjun closed 5 years ago

yogjun commented 6 years ago

1.栈区 值传递 基本参数类型: 举例:int num = 1; double dou= 2.3; 存放在栈内存中,每次传递复制当前内容,在方法中修改参数不会改变调用前的值 2.堆区 引用传递 举例:Object String 引用地址存放在栈内存中,对应具体内容存放在堆内存。 当调用函数时(或者循环等其他引用),通过引用操作的是同一块堆内存。 因此无论何处修改都是实际修改到了对内存中的内容。 3.方法区 方法区作为堆的一个逻辑部分,没有另外的单独内存。但是,方法区并不是堆。 大量类的实例有很多共同方法,不可能每个实例都保存方法的编译结果。 方法区是各个线程共享的,用于存储已经被虚拟机加载的类信息(即加载类时需要加载的信息,包括版本、field、方法、接口等信息)、final常量、静态变量、编译器即时编译的代码等。