new() 出来的都是在Heap中
这个还与具体的条件相关,如果在String池中没有“abc”对象存在那么就会创建两个对象,如果池中已经存在“abc”对象的话,那么就只是创建一个对象,所以这个问题要看具体的条件才能下结论
6.
== 基本型比值, 对象比引用.
本文深入解析JVM内存模型,区分Stack与Heap的功能与使用场景,详细介绍String对象在内存中的存储方式,以及==运算符在比较基本类型与对象时的区别。
286

被折叠的 条评论
为什么被折叠?

JVM 中, 线程持有Stack, Stack随线程创建而创建.
Heap 则是JVM启动时就启动, 共享, 由垃圾回收机制清理.
2.
Stack 和 Heap都是在Ram中划分.
3.
基本型 int, char...等在创建前会查看Stack中是否已经有, 有则则向, 没有则新建.
4.
String 可以想象为与char[]等同, String a= "abc", 首先在Heap中创一个对象, 再到Stack中找char[]是否存在, 有则 指向该地址, 无则在Stack中创建.
5.
String a = new("abc"); new()出来的都会有自己的独立存放, 不会像前面一样的指向, 而是指向新创建的.