第二章.一切皆是对象之对象创建存储过程(引用)

来源:互联网 发布:seo.chinaz 编辑:程序博客网 时间:2024/04/28 23:03

导读:

  • java 是基于C++的,但相比之下,java是一种更“纯粹”的面向对象程序设计语言。
  • C++和Java都是混合/杂合型语言。杂合型语言允许多种编程风格
  • java假设我们只进行面向对象的程序设计。所以 一切皆是对象。

1.引用

  • 每种编程语言都有自己的操纵内存中元素的方式,如c和c++中的指针。
  • 在java中,一切皆是对象,操纵的标识符实际上是对象的一个“引用”,如一个遥控器,一个遥控器可以没有电视。
    eg:String s;
    使用一个没有对象的引用会抛出异常,最常见的是空指针异常,所以在声明一个引用时最好把他初始化,关联到一个对象。

2.对象的创建

  • 使用new操作符,new关键字的意思是“给我一个对象”。
    String s = new String("abc");
  • 自行设计类,然后创建对象

3.对象的存储

3.1寄存器

  • 最快的存储区,位于不同于其他存储区的地方,处理器内部。寄存器的数量极其有限,我们是不能直接控制的,即使在我们的程序中也不应该有操作寄存器的任何代码。

3.2堆栈【栈】

  • 位于通用的RAM(随机访问存储器,也成为易失性存储器,它只能暂时的存储读写数据),通过堆栈指针可以获得间接支持。
  • 堆栈指针向下移动移动,分配新内存,向上移动,释放内存。这种有效的方法仅次于寄存器。
  • Java系统必须知道存储在堆栈中所有项的确切生命周期,以便上下移动堆栈指针。
    这一约束限制了程序的灵活性,所以某些数据(如对象的引用,基本类型数据,方法等)存储于堆栈中,但是对象并不存储于其中

3.3堆

  • 一种通用的内存池(也位于RAM中),用于存放所有的Java对象。
  • 与堆栈不同,编译器不需要知道存储的 数据在堆内存活了多长时间。因此,在对内分配存储有很大的灵活性,
  • 当new一个对象时,就会自动在堆内进行存储分配。
  • 代价:用堆进行存储分配和清理可能比用堆栈进行存储分配需要更多的时间。

3.4常量存储

  • 常量通常直接存放在程序代码的内部,他们永远不会被改变,非常安全。

3.5非RAM存储【序列化和反序列化】

  • 如果数据完全存活在程序之外,那么它可以不受程序的控制,在程序没有运行时也可以存在。如流对象和持久化对象(对象的序列化);
  • 流对象中,对象转化成字节流,通常被发送到另一台机器。
  • 持久化对象,对象被存放在磁盘中,即使程序终止,它也可以保存自己的状态。
  • 把对象转化成可以存放在其他媒介上的事物,在需要时,可恢复成常规的,基于RAM的对象(如反序列化),java提供了对轻量持久化的支持。
















0 0
原创粉丝点击