第二章 一切都是对象
2.1 用句柄操作对象
句柄和对象的关系。
即使没有电视机,遥控板亦可独立存在。也就是说,只是由于拥有一个句柄,并不表示必须有一个对
象同它连接。所以如果想容纳一个词或句子,可创建一个 String 句柄:
String s;
2.2 所有对象都必须创建
2.2.1 保存到什么地方
六个可以保存数据的地方:
寄存器:处理器内部
堆栈:常规RAM区域,对象句柄存放在这里,但对象没有!!!
堆:常规用途的内存池,也在RAM当中
静态存储:Java对象永远不会在这
常数存储:程序代码内部
非RAM存储:流式对象和固定对象
2.2.2 特殊情况:主要类型

高精度数字:BigInteger和BigDecimal
能对int和float进行的操作对他们俩两个也都可以进行,只不过要用方法
而不是用操作符来进行
2.2.3 Java的数组
创建对象数组时,实际创建的是一个______。
对象句柄,而且每个句柄都会自动初始化成一个特殊值,并带有自己的
关键字:null(空)。一旦 Java 看到null,就知道该句柄并未指向一个对象。
正式使用前,必须为每个句柄都分配一个对象。
若试图使用依然为null 的一个句柄,就会在运行期报告问题。
因此,典型的数组错误在Java 里就得到了避免。
2.3 绝对不要清除对象
2.3.1 作用域

2.3.2 对象的作用域
{
String s = new String("a string");
} /* 作用域的终点 */
那么句柄s
会在作用域的终点处消失
。然而,s指向的String 对象
依然占据
着内存空间。
2.4 新建数据类型–类
设置两种类型的元素:
- 数据成员(有时也叫“字段”)
- 成员函数(通常叫“方法”)。
其中,数据成员是一种对象(通过它的句柄与其通信),可以为任何类型。它也可以是主类型(并不是句柄)
之一。
如果是指向对象的一个句柄,则必须对他进行初始化(用构造器)
作为类的成员使用,Java会为其分配为默认值(0的含义的值)
但是!!!作为局部变量并不会,而是随机分配一个值
2.6.3 static 关键字
正常:只有执行了new,才会正式的生成数据存储空间,并可用来使用相应的方法
一旦用static创建一个对象,那么数据或方法就不会同那个类的任何对象实例联系在一起