3.万物皆对象

万物皆对象

3.2对象创建
3.2.1数据存储

有5个不同的地方可以存储数据:

  1. 寄存器(registers)最快的存储区域,位于cpu内部。然而,寄存器的数量十分有限,所以寄存器根据需求进行分配。对其没有直接的控制权,也无法在自己的程序里找到寄存器存在的踪迹。
  2. 栈内存(stack)存在于常规内存ram(随机访问存储器,Random Access Memory)区域中,可通过栈指针获得处理器的直接支持。栈指针下移分配内存,上移释放内存。这是一种仅次于寄存器的非常快速有效的分配存储方式。创建程序时,java系统必须知道栈内保存的所有项的生命周期。这种约束限制了程序的灵活性。因此,虽然在栈内存上存在一些java数据(如对象引用),但java对象本身的数据却是保存在堆内存的。
  3. 堆内存(heap)这是一种通用的内存池(也在ram区域),所有java对象都存在于其中。与栈内存不同,编译器不需要知道对象必须在堆内存上停留多长时间。因此,用堆内存保存数据更具灵活性。创建一个对象时,只需用new命令实例化对象即可,当执行代码时,会自动在堆中进行内存分配。这种灵活性是有代价的:分配和清理堆内存要比栈内存需要更多的时间。
  4. 常量存储(constant storage)常量值通常直接放在程序代码中,因为它们永远不会改变。如需严格保护,可考虑将它们置于只读存储器rom(Read Only Memory)中。
  5. 非ram存储(non-ram storage)数据完全存在于程序之外,在程序未运行以及脱离程序控制后依然存在。两个主要的例子:序列化对象持久化对象。这些存储的方式都是将对象转存于另一个介质中,并在需要时恢复成常规的、基于ram的对象
3.2.2基本类型的存储

有一组类型在java中使用频率很高,它们需要特殊对待,这就是java基本类型。对于这些基本类型的创建方法,java使用一个自动变量,这个变量直接存储值,并置于栈内存中,因此更加高效。
如果希望在堆内存里表示基本类型的数据,就需要用到它们的包装类。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值