堆区?还是常数存储区?
使用的时候是怎么样的加载过程呢?谢谢

解决方案 »

  1.   

    这上不太清楚啊。
    不过我猜,常量区只存基本数据的常量和字符串常量。常量区不可能占太大的内存吧。
    所以我认为,final是只是讲法上的,就和public之类的一样.final方法在编译时是嵌入到代码中的。final的对象本身我认为还是存在堆中,引用在栈中。不知道我说的对不对。希望高手给出准确答案。
      

  2.   

    只要是基本变量类型就是存储在栈 对象类型都是存储在堆 成员变量也是存储的堆 这个和final不final没关系吧
      

  3.   

      final 声明一个变量只是表明这个变量的值不可改变,修饰类的时候,只是表明这个类不能被继承。这和变量的存储没什么关系吧
      

  4.   

    对象是在堆里吧,标示不让改变引用。
    final变量就是常量,编译时间就可以确定的事情,已经编译在class文件,加载后有常量区
      

  5.   


    了解详细类加载情况可以看   深入JAVA虚拟机这本书 第八和第七章有介绍final
    http://d.download.csdn.net/down/211290/lixiyue126
      

  6.   

    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修饰的变量具有唯一的特点,因为赋了一次值后就不能改变了
      

  7.   

    final修饰的类是最终类,用它表示不让这个类继承
    final类放在内存哪里属于类加载的情况,你可以看看书,这个说起来就太长了
      

  8.   

    多谢诸位
    这个问题是在看 thinking in java时候产生的
    第二章提到数据存储的六个区域
    我就是觉得"固定存储"这个不好理解
    "常量值通常放在程序里,这样他们呢就不会被改变了,也更安全"
    我想了半天,也只有 加了final修饰的才是不会被改变的
    所以想问问这个"固定存储"是不是就是存储final的深入Java虚拟机 这本书看了几遍,不过还有很多不懂的地方,甚至有的越看越糊涂
      

  9.   

    栈和堆的区别是什么?
    为什么说栈的速度快,堆的速度慢?
    JVM在处理他们的时候,有什么区别么