固定的。兄弟,你要清楚,虽然你可以操作变量,但是不代表字符串常量是可变的 var a = "hello" // a = "hello world" 其实这个时候a指向的内存已经改变了。
java中string是final的,不可改变的 String a = "abc"; a = "abcd";//a的内存地址发生了变化,有原来执行abc指向了abcd;但内存中还是有2个对象 abc、abcd的 a = "abc";//又指向了abc,jvm会判断abc在内存中是否存在,如果存在就改变指针指向的位置, //不存在就开辟内存,并创建一个abc
var a = "hello" //
a = "hello world"
其实这个时候a指向的内存已经改变了。
String a = "abc";
a = "abcd";//a的内存地址发生了变化,有原来执行abc指向了abcd;但内存中还是有2个对象 abc、abcd的
a = "abc";//又指向了abc,jvm会判断abc在内存中是否存在,如果存在就改变指针指向的位置,
//不存在就开辟内存,并创建一个abc
大大们都说到哪去了
JS中string是原始类型,原始值是存放在栈中的
就是说 var str = "abc";
str 和 abc 都是存在栈里面
LS说的string可变,并不是原始值的变化,而是生成一个新的string去存到新的位置去
所以string放哪里和它的可变与否无关