zoukankan      html  css  js  c++  java
  • 从头认识java-1.8 创建和操纵对象(1)

    这一章节我们来讨论一些创建和操纵对象。

    说来,上面的两个话题都看似简单。例如:

    使用new创建对象:

    new String()

    使用new来创建了一个文本对象。

    使用引用操纵对象

    String s;

    新建一个s变量,s也是引用String这个类所创建的对象。

    但是需要注意的是,如果单纯只是上面的那句,当s调用对象的方法时,系统将会出现异常,因为s还没有初始化。所以,一般的做法是:

    String s=new String();

    在建立变量的同时,初始化变量。

    那么,如果这样的话,这个话题说完了,我们下面将会扩展这个话题,使用2-3个章节来讨论他们的扩展话题。

    1.创建的对象存储在哪里?

    (1)寄存器-Registers。

    寄存器在cup里面,它的运算最快,但是空间小,因此需要根据需求来分配,而且他不会根据我们的代码来分配,而是系统自己计算分配。

    寄存器作用:

    a.可将寄存器内的数据执行算术及逻辑运算

    b.存于寄存器内的地址可用来指向内存的某个位置,即寻址

    c.可以用来读写数据到电脑的周边设备。


    (2)栈-stack

    位于ram

    存储对象引用的地方,不存储对象。

    当需要一个对象,在堆栈里面查询引用,然后到堆(heap)去找到java对象,再把对象压到栈里面进行准备进行运算,当用完了对象,它会抛弃掉这个对象。

    栈使用的是一级缓存, 他们通常都是被调用时处于存储空间中,调用完毕立即释放。

    栈的优势是,存取速度比堆要快,仅次于直接位于CPU中的寄存器。但缺点是,存在栈中的数据大小与生存期必须是确定的,缺乏灵活性。另外,栈数据在多个线程或者多个栈之间是不可以共享的,但是在栈内部多个值相等的变量是可以指向一个地址的。堆的优势是可以动态地分配内存大小,生存期也不必事先告诉编译器,Java的垃圾收集器会自动收走这些不再使用的数据。但缺点是,由于要在运行时动态分配内存,存取速度较慢。


    (3)堆-heap

    位于ram

    速度比栈低,存储对象的地方。

    但是它比栈灵活,动态分配对象的存储空间,缺点是,分配和清理对象的时间较长


    (4)常量存储-rom

    常量一般是不改变的,所以一般存储在rom里面


    (5)非ram存储-硬盘等


    总结,这一章节介绍了对象的存储。


    这一章节就到这里,谢谢。

    -----------------------------------

    目录


    版权声明:本文为博主原创文章,未经博主允许不得转载。

  • 相关阅读:
    hdu 5489——Removed Interval——————【删除一段区间后的LIS】
    ACdream 1431——Sum vs Product——————【dfs+剪枝】
    HDU 5496——Beauty of Sequence——————【考虑局部】
    HDU 2586——How far away ?——————【LCA模板题】
    在 Web 项目中应用 Apache Shiro
    被误解的 Node.js
    [置顶] 乔布斯的斯坦福演讲(双语)
    [置顶] 献给写作者的 Markdown 新手指南
    Linux 环境中从源代码编译安装 ReText 问题与解决
    基于 OSGi 的面向服务的组件编程
  • 原文地址:https://www.cnblogs.com/raylee2007/p/4896696.html
Copyright © 2011-2022 走看看