首页 > 代码库 > 《JAVA编程思想第四版》——一切都是对象

《JAVA编程思想第四版》——一切都是对象

2.1 用句柄操纵对象

      JAVA中一切都可“看做”对象。操作对象的方式是通过一个指向对象的句柄(又称引用或指针)。但是句柄并不一定指向对象,此时操作句柄会获得一个错误(运行期)

比如:String s;s.length();

这里创建句柄s,s并没有指向对象。如果此时向s发送一条消息会报错。编译器提示“the local variable s may not have been initialized”

String s = new String("hello,world!");s.length();

这里创建句柄s,s指向一个对象(对象位于堆区),向s发送消息正常。

 2.2 所有对象都必须创建

创建句柄时,一般也同时将其指向某个对象。对象的创建方式为 new 关键字。

String s = new String("hello,world!");

2.2.1 数据保存的位置

①寄存器,位于处理器内部。根据需要由编译器分配。

②堆栈,驻留常规RAM区域,速度仅次于寄存器。对象句柄保存在堆栈中。

③堆,一种常规用途的内存池(在RAM中)。灵活性高于堆栈,但是性能低(堆内分配存储空间时间更长),JAVA对象保存在此区域。

④静态存储,位于RAM中。static关键字指出一个对象的特定元素是静态的。但JAVA对象本身永远不会置入静态存储区。

⑤常数存储,位于只读存储(ROM)。保存常数值

⑥非RAM存储,流式对象或固定对象。

2.2.2 主要类型

又称为基本类型,主要包括:boolean,char,byte,short,int,long,float,doule,void

对于这些类型,不是通过new创建变量,而是创建一个并非句柄的“自动”变量,这个变量容纳了具体的值。位于堆栈中。

主类型都有自己的包装类

 基本数据类型
主类型 大小 最小值 最大值 封装器类型
boolean   1      Boolean
 char  16  0  2^16 - 1  Character
 byte  8  -128  127  Byte
 short  16  -2^15  2^15-1  Short
 int  32  -2^31  2^31-1  Integer
 long  64  -2^63  2^63-1  Long
 float  32  IEEE754   IEEE754  Float
double 64  IEEE754  IEEE754 Double

 

 

 

 

《JAVA编程思想第四版》——一切都是对象