请问,final变量和final类存储在哪里? 堆区?还是常数存储区?使用的时候是怎么样的加载过程呢?谢谢 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 这上不太清楚啊。不过我猜,常量区只存基本数据的常量和字符串常量。常量区不可能占太大的内存吧。所以我认为,final是只是讲法上的,就和public之类的一样.final方法在编译时是嵌入到代码中的。final的对象本身我认为还是存在堆中,引用在栈中。不知道我说的对不对。希望高手给出准确答案。 只要是基本变量类型就是存储在栈 对象类型都是存储在堆 成员变量也是存储的堆 这个和final不final没关系吧 final 声明一个变量只是表明这个变量的值不可改变,修饰类的时候,只是表明这个类不能被继承。这和变量的存储没什么关系吧 对象是在堆里吧,标示不让改变引用。final变量就是常量,编译时间就可以确定的事情,已经编译在class文件,加载后有常量区 了解详细类加载情况可以看 深入JAVA虚拟机这本书 第八和第七章有介绍finalhttp://d.download.csdn.net/down/211290/lixiyue126 final变量不是常量,楼上的搞错了首先回答楼主的提问:1,内存有六块区域能够存储数据,用的最多的就是堆heap(存储对象),位于RAM中(random access memory随即访问存储器);栈stack(存储引用),RAM中;静态存储static storage(存储static修饰的),RAM中;常量存储constant storage(存储不变的),所以这个常量存储有点特殊,常量存储位于只读存储器ROM中,也就是read-only memory;还有2个不介绍了2,答案很简单了。static final修饰的变量就是常量,当然是在常量存储区域;final修饰的变量在栈中,只不过它修饰的变量只能赋一次值。因此对每个new出来的对象来说,final修饰的变量具有唯一的特点,因为赋了一次值后就不能改变了 final修饰的类是最终类,用它表示不让这个类继承final类放在内存哪里属于类加载的情况,你可以看看书,这个说起来就太长了 多谢诸位这个问题是在看 thinking in java时候产生的第二章提到数据存储的六个区域我就是觉得"固定存储"这个不好理解"常量值通常放在程序里,这样他们呢就不会被改变了,也更安全"我想了半天,也只有 加了final修饰的才是不会被改变的所以想问问这个"固定存储"是不是就是存储final的深入Java虚拟机 这本书看了几遍,不过还有很多不懂的地方,甚至有的越看越糊涂 栈和堆的区别是什么?为什么说栈的速度快,堆的速度慢?JVM在处理他们的时候,有什么区别么 连接sql2005老显示找不到合适驱动,求助!! socket传输文件出现很诡异的错误.. 请教,如何在控制台打印出带有颜色的字体 请问怎样可以把一个字符串转变成一个二进制的流? sp3的补丁打了,可是还是出先这个问题,是什么原因啊??没分了 rmi问题:在执行Naming.rebind()时出错!不知道是什么原因! 简单任务 char 怎样使用java来做j2me??? 请问如何修改tabel中column的宽度。 一个jni问题:) 如何真正实现屏蔽键盘输入的jtextfield。。。。。。。高分。。急
不过我猜,常量区只存基本数据的常量和字符串常量。常量区不可能占太大的内存吧。
所以我认为,final是只是讲法上的,就和public之类的一样.final方法在编译时是嵌入到代码中的。final的对象本身我认为还是存在堆中,引用在栈中。不知道我说的对不对。希望高手给出准确答案。
final变量就是常量,编译时间就可以确定的事情,已经编译在class文件,加载后有常量区
了解详细类加载情况可以看 深入JAVA虚拟机这本书 第八和第七章有介绍final
http://d.download.csdn.net/down/211290/lixiyue126
首先回答楼主的提问:
1,内存有六块区域能够存储数据,用的最多的就是堆heap(存储对象),位于RAM中(random access memory随即访问存储器);
栈stack(存储引用),RAM中;
静态存储static storage(存储static修饰的),RAM中;
常量存储constant storage(存储不变的),所以这个常量存储有点特殊,常量存储位于只读存储器ROM中,也就是read-only memory;
还有2个不介绍了
2,答案很简单了。
static final修饰的变量就是常量,当然是在常量存储区域;
final修饰的变量在栈中,只不过它修饰的变量只能赋一次值。因此对每个new出来的对象来说,final修饰的变量具有唯一的特点,因为赋了一次值后就不能改变了
final类放在内存哪里属于类加载的情况,你可以看看书,这个说起来就太长了
这个问题是在看 thinking in java时候产生的
第二章提到数据存储的六个区域
我就是觉得"固定存储"这个不好理解
"常量值通常放在程序里,这样他们呢就不会被改变了,也更安全"
我想了半天,也只有 加了final修饰的才是不会被改变的
所以想问问这个"固定存储"是不是就是存储final的深入Java虚拟机 这本书看了几遍,不过还有很多不懂的地方,甚至有的越看越糊涂
为什么说栈的速度快,堆的速度慢?
JVM在处理他们的时候,有什么区别么