第二章:一切都是对象
1.用引用来操作对象
每种编程语言都有自己操作内存中元素的方式;
在Java中,采用引用(reference)来操作对象,在Java语言中,一切都是对象,但是操作表示符只是对象的一个引用。
String s; 这条语句只是创建了一个引用,并没有创建一个对象
String ss = "hello work"; 这里才创建了一个String对象
2.必须由你来创建所有对象
如果你创建了一个引用,那么希望它和一个新的对象关联;
一般创建使用new关键字来实现这个目的
String str = new String ("HelloWork");
2.1存储在什么地方
程序在运行的时候,对象是怎么进行安排放置的?内存如何分配?
~五大存储区
1.寄存器
最快的存储区,位置在处理器内部,但是寄存器数量有限,所以寄存器根据需求分配,你不能直接控制,也不能在程序中
感觉到它的任何存在。
2.堆栈
速度仅次于寄存器,位于通用RAM(随机访问存储),可以通过堆栈指针从处理器那里获得支持
堆栈指针向下移动,创建新的内存,若向上移动,释放内存。
java系统必须知道存储在堆栈内部所有项的
生命周期,以便向上或向下移动堆栈指针。
3.堆
一种通过的内存池,也位于RAM中,用于存放所有的java对象
堆和堆栈的不同是,编译器不需要存储的数据在堆中的生命周期,灵活性比堆栈高
但是高灵活性付出的代价是,在堆中分配和清理可能比堆栈需要更多的事件
4.常量存储
常量值一般存储在程序代码内部,这样做事安全的,因为它们的值永远不需要改变
5.非RAM存储
如果数据存储在程序之外,那么它可以不受程序的任何控制,在程序没有运行时也可以存在。
例如:
流对象
在流对象中, 对象转化成字节流,通常发送给另外一台机器
持久化对象
对象用于存放在磁盘
2.2 基本类型
基本类型 | 大小 | 最大值 | 最小值 | 包装类型 |
---|---|---|---|---|
boolean | Boolean | |||
char | 16 bits | Unicode0 | Unicode2_16-1 | Char |
byte | 8 bits | +127 | -128 | Byte |
short | 16 bits | +2_15-1 | -2_15 | Short |
int | 32 bits | +2_31-1 | -2_31 | Integer |
long | 64 bits | +2_63-1 | -2_63 | Long |
float | 32 bits | IEEE754 | IEEE754 | Float |
double | 64 bits | IEEE754 | IEEE754 | Double |
void | Void |
基本类型 | 大小 | 最小值 | 最大值 | 包装类型 |
---|---|---|---|---|
2.3 java中的数组