Thinking in Java Reading Note(2.一切都是对象)

1.用引用操纵对象

  如果向没有指向对象的引用发送一个消息,就会返回一个运行时错误。因此一种安全的做法是:创建一个引用的同时便进行初始化

2.必须由你创建所有对象

  1)存储到什么地方

  程序运行时,对象是怎么进行放置安排的呢?特别是内存是怎样分配的呢?有五个不同的地方可以存储数据。

  a.寄存器。这是最快的存储区,因为它位于处理器内部。由于寄存器的数量有限,你不能直接控制

  b.堆栈。位于通用RAM(随机访问存储器)中,但通过堆栈指针可以从处理器哪里获得直接支持。某些Java数据存储于堆栈中---特别是对象引用,但是Java对象并不存储于其中

  c.堆。一种通用的内存池(也位于RAM区),用于存放所有的Java对象。当需要一个对象时,只需用new写一行简单的代码,当执行这行代码时,会自动在堆里进行存储分配

  d.常量存储。常量值通常直接存放在程序代码内部,这样做是安全的,因为它们永远不会被改变。

  e.非RAM存储。如果数据完全存活于程序之外,那么它可以不受程序的任何控制,在程序没有运行时也可以存在。其中两个基本的例子是流对象和持久化对象

  2)特例:基本类型

  不用new来创建变量,而是创建一个并非是引用的"自动变量“。这个变量直接存储”值“,并置于堆栈中,因此更加高效。

  

  Java提供了连个用于高精度计算的类:BigInteger和BigDecimal。能作用于int和float的操作,也同样能作用于BigInteger或BigDecimal。只不过必须以方法调用的形式。

  3)Java中的数组

  Java确保数组会被初始化,而且不能在它的范围之外被访问这种范围检查,是以每个数组上少量的内存开销及运行时的下标检查为代价的

  当创建一个数组对象时,实际上就是创建了一个引用数组,并且每个引用都会自动被初始化为null。

3.永远不需要销毁对象

  1)作用域

  作用域决定了在其内定义的变量名的可见性和生命周期

  2)对象的作用域

  由new创建的对象,只要你需要,就会一直保留下去。不需要时,垃圾回收器会自动回收,防止内存泄露。

4.方法

  Java的方法决定了一个对象能够接收什么样的信息。面向对象的程序设计通常简单地归纳为”向对象发送信息“。

5.static关键字

  通常来说,当创建类时,就是在描述那个类的对象的外观与行为。执行new来创建对象,数据存储空间才被分配,其方法才供外界调用。

  有两种情形用上述方法是无法解决的。一种情形是,只想为某特定域分配单一存储空间,而不去考虑究竟要创建多少对象,甚至根本就不创建任何对象。另一种情形是,希望某个方法不与包含它的类的任何对象关联在一起

  通过static关键字可以满足这两方面的需要。

  static方法常常拿来做”牧羊人“的角色,负责看护与其隶属同一类型的实例群

6.import

  有一个特定类会自动被导入到每一个Java文件中:java.lang

  

原文地址:https://www.cnblogs.com/Miromiaosang/p/8891477.html