首页 > 试题广场 >

String s1 =new String("nowcode

[单选题]

String s1 =new String("nowcoder") ;字符串s1存储在内存的哪个区域()

  • 内存缓冲区

  • 字符串缓冲池

对于字符串:其对象的引用都是存储在栈中的,如果是【编译期已经创建好(直接用双引号定义的)的就存储在常量池中】,如果是【运行期(new出来的)才能确定的就存储在堆中】。对于equals相等的字符串,在常量池中永远只有一份,在堆中有多份。
发表于 2022-01-16 18:44:49 回复(0)
new对象生成字符串的方式,会在堆中开辟空间,首先会在字符串常量池中寻找有没有对应的字符串,没有的话,在常量池中创建该字符串,并给堆中创建的新对象传递引用,栈中的s1引用指向堆中的对象,这时堆内的对象存储的也是地址,堆中的地址指向字符串常量池
发表于 2022-03-26 21:18:47 回复(0)
我也选了D
发表于 2022-06-09 15:25:13 回复(0)
在java中对象不是在栈中吗,然后指向堆
发表于 2022-02-25 14:11:06 回复(4)