举例说明下问题。比如我定义两个变量如下。 int a=3; 
int b=3; 一般是这样来理解的。即首先在栈中分配一个名为a和b的内存空间。然后将3分别存进去。因为这有别于new产生的对象的对象引用。对象引用存储的是堆中的入口地址。但我又在网上看到对基本数据类型存储的过程中夜存在‘引用’。为节省时间,将问题罗列如下: 
1.对于 int a=3;语句,在执行时,栈中的具体指令执行情况。说的越具体越好。 
2.Java中有几种存储区?每个存储区的作用?(涉及成员变量,方法,方法的参数,局部变量,对象,常量,代码) 
3.常量都是有类型的,那么它们存储在哪里的呢?

解决方案 »

  1.   

    2.Java中有几种存储区
    堆栈,堆,常量存储区
      

  2.   

    看指令执行情况可以这么做:
    如Test.javapublic class Test {
    private static final int final_value = 5;
        public static void main(String[] args) {
            int a = 3;
    int b = 3;
    int c = final_value;
        }
    }javac Test.java
    javap -c Test
    得到输出:Compiled from "Test.java"
    public class Test extends java.lang.Object{
    public Test();
      Code:
       0: aload_0
       1: invokespecial #1; //Method java/lang/Object."<init>":()V
       4: returnpublic static void main(java.lang.String[]); //main方法对应的指令序列
      Code:
       0: iconst_3
       1: istore_1
       2: iconst_3
       3: istore_2
       4: iconst_5
       5: istore_3
       6: return}指令的意义可以去看jvm规范:http://java.sun.com/docs/books/jvms/second_edition/html/VMSpecTOC.doc.html