首页 > 代码库 > 《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编程思想第四版》——一切都是对象