java:常量池、堆、栈

来源:百度知道 编辑:UC知道 时间:2024/09/21 19:02:29
什么是常量池?
常量池和堆是什么关系?属于堆的一部分?
常量池和栈是什么关系?属于栈的一部分?
int a = 1;1会存放在哪里?
String s1 = "thanks";thanks会存放在哪里?
String s2 = new String("thanks");thanks会存放在哪里?
String a ="th";String b = "anks";String c =a+b;c会存放在哪里?
多谢!
字符串池是什么?和常量池有什么关系?

int a = 1;1会存放在栈里
String s1 = "thanks";thanks会存放在data segment里
String s2 = new String("thanks");thanks会存放在data segment里
String a ="th";String b = "anks";String c =a+b;c会存放在data segment里
字符串全部存放在data segment里
常量池全部在栈里。
如果你不new的话,比如你写String s = "thanks";这时s分配在栈里,s直接指向字符池里的"thanks";但如果你这样写,String s; s = new String("thanks");这时s指向堆里的一块内存,这个内存里的地址指向字符池里的"thanks";
怎么样,楼主这下明白了吧!

变量会存放在堆栈中,句柄也会存放在堆栈中,对象会放在堆中,也就是内存池中。