String str = new String("123"),我知道string是引用类型,str存储的是地址,那为什么直接调用str时返回的是字符串"123",而不是实际存储"123"的地址?
JVM 内存分栈、 堆、方法区三个区域。
栈:存储局部变量、引用地址
堆:存储 new 的对象
方法区:存储类的代码、 static 变量和方法、常量池
当你new的时候,在栈中创建引用变量str,地址:0x11(指向堆中的值),在堆中存放str的值123,当你使用str比如②的打印,就根据0x11这个地址去对中找到值,再打印出来。
关于字符串存储位置你可以去研究下,这个图稍微还有有点错,但意思表达明白了。
望采纳!!!