网上有博客说,java中的常量存储在常量池中,而Think in java 说常量直接存放在程序代码内部,那么java中的常量到底存储在哪里?java程序加载到内存后,除了数据还有程序代码,那么代码是存储在哪的。
另外有提到说,栈中的值存在共享行为,例如对于:int a =3; int b = 4;这两句的执行过程是:
编译器先处理 int a = 3 ;首先它会在栈中创建一个变量为 a 的引用,然后查找栈中是否有 3 这个值,如果没找到,就将 3 存放进来,然后将 a 指向 3 。接着处理 int b = 3 ;在创建完 b 的引用变量后,因为在栈中已经有 3 这个值,便将 b 直接指向 3 。这样,就出现了 a 与 b 同时均指向 3 的情况。
而在Think in Java 中特别指明了基本数据类型,是创建了一个非引用的自动变量,这个变量直接存储值,并置于栈中。
这两种说法,哪个正确
2 回答
慕森卡
TA贡献1806条经验 获得超8个赞
你理解错了;常量是常量;int a=3是变量,这点你搞清楚;java内存分为四块,堆,栈,静态区(常量区)和程序代码区。我记得是这四个,new出来的都在堆上,栈里是临时变量,比如int a=3;常量去存放const和static;代码区就不说恶霸
添加回答
举报
0/150
提交
取消