如果是成员变量,那么直接在成员变量的堆内存空间中存在int这个东西的内存
如果是方法中的临时变量,那么是在运行时出现在栈内存里

解决方案 »

  1.   

    int a=1中,定义 引用变量 a 时Java就在 栈 中为这个变量分配内存空间,而1 这个对象在堆中分配内存,让栈中变量 a 的取值等于对象1在堆内存中的首地址,栈中的这个变量啊就成了对象1 的引用变量。  引用变量就相当于是对象起的一个名称,以后就可以在程序中使用栈中的引用变量来访问堆中对象
      

  2.   

    堆内存:存储所有的JAVA对象,通常是New出来的对象栈内存:存储所有的变量,和对象的引用静态块: 存储常量代码块:存放源程序的二进制代码
      

  3.   

    int a = 1;不是为变量a分配内存空间,然后把1以二进制形式存放到里边吗
      

  4.   

    如果仅仅是常见的变量定义,分配机制如下,如果涉及到对象,那就另当别论了:  
    栈有一个很重要的特殊性,就是存在栈中的数据可以共享。假设我们同时定义:  Java代码  int a = 3;  int b = 3;  编译器先处理int a = 3;首先它会在栈中创建一个变量为a的引用,然后查找栈中是否有3这个值,如果没找到,就将3存放进来,然后将a指向3。接着处理int b = 3;在创建完b的引用变量后,因为在栈中已经有3这个值,便将b直接指向3。这样,就出现了a与b同时均指向3的情况。  这时,如果再令 a=4;那么编译器会重新搜索栈中是否有4值,如果没有,则将4存放进来,并令a指向4;如果已经有了,则直接将a指向这个地址。因此a值的改变不会影响 到b的值。
      

  5.   

    这有一篇关于Java内存分配的文章,你可以看看
    http://blog.csdn.net/rj042/article/details/6871030