题目
官方答案
我查了一些资料:
js中的堆内存与栈内存
在js引擎中对变量的存储主要有两种位置,堆内存和栈内存。
和java中对内存的处理类似,栈内存主要用于存储各种基本类型的变量,包括Boolean、Number、String、Undefined、Null,**以及对象变量的指针,这时候栈内存给人的感觉就像一个线性排列的空间,每个小单元大小基本相等。
而堆内存主要负责像对象Object这种变量类型的存储
我的总结:
class A {
String i = “op”;//字符变量—栈
void func(String s) {
s = “”+9;//字符变量—栈
}
static void test() {
A a = new A();//a(对象指针)在栈上,new出来的的对象A在堆上
a.func(a.i);//这行执行后s=“op9”,a.i的值不变还是"op"
}
}