1. 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()出来的都会有自己的独立存放, 不会像前面一样的指向, 而是指向新创建的. new() 出来的都是在Heap中 这个还与具体的条件相关,如果在String池中没有“abc”对象存在那么就会创建两个对象,如果池中已经存在“abc”对象的话,那么就只是创建一个对象,所以这个问题要看具体的条件才能下结论 6. == 基本型比值, 对象比引用.
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()出来的都会有自己的独立存放, 不会像前面一样的指向, 而是指向新创建的.