Java对象变量在内存的分配

来自CloudWiki
Cloud17讨论 | 贡献2018年3月4日 (日) 08:24的版本 (创建页面,内容为“*Java的所有变量(包括基本数据类型和对象)都保存在内存中。可以将内存看作一个一个的储物柜,每个柜子都有自己的编号…”)
(差异) ←上一版本 | 最后版本 (差异) | 下一版本→ (差异)
跳转至: 导航搜索
  • Java的所有变量(包括基本数据类型和对象)都保存在内存中。可以将内存看作一个一个的储物柜,每个柜子都有自己的编号(内存地址),通过编号可以存取物品(数据)。对象本身存在一个地方,对象变量存放的是对象的地址,基本数据类型变量存放的是变量值,如图3-3所示。
  • Java3-1.png

图3-3 基本数据类型变量的内存示意图

  • 对象实例化的过程在内存中的存在形式如图3-4所示。在Book的toString()方法中通过super.toString() 可以调用父类的toString()方法,作用是输出对象的类名和地址,输出结果类似 Book@7852e922 ,其中@之前是类名,@之后是地址。通过调试视图,在单步执行状态下也可以看到变量的地址和数据。
  • Java3-2.png

图3-4 对象实例化过程的内存创建示意图

  • 你可能还不了解堆内存和栈内存等概念。没有关系,这并不妨碍你现在编写程序。你需要知道的是,对象创建后一定要放到某个变量中。如果不这样做,之后你就无法找到这个对象并使用它。就像老师不知道某个同学的姓名无法提问他一样。

返回 Java程序设计