java字符串常量池 与 堆内存 混淆

图片说明输出语句中的"abc"和输入的str 都存在什么位置?

"abc"存在于字符串常量池,str存在于堆内存
当你用input.next()输入一个字符串时,JVM会先看看字符串常量池中,有没有"abc",
1.没有,会将"abc"放入字符串常量池中,然后把"abc"的引用地址赋值给str
2.有,则直接将"abc"的引用地址赋值给str
而str是String类型,String是一个对象,对象需要在堆内存中开辟空间

希望对你有所帮助

https://www.cnblogs.com/Seeasunnyday/p/9087958.html