第二章一切都是对象
2.1 用句柄操纵对象
句柄 也可以称作”引用” 甚至”指针” 例如:String s;s 就是一个句柄. 在java里,除了九种基本类型,其他的都是引用类型.
2.2 所有对象都必须创建
例如: String s= new String("asdf");
关于内存的分配:有六个地方可以保存数据. 这里不详细,可以翻阅<<深入理解java虚拟机>>
(1)寄存器。
(2) 堆栈。
(3) 堆。
(4) 静态存储。
(5) 常数存储。
(6) 非RAM存储。(流式对象和固定对象)
Java的九种基本类型:
主类型 |
大小 |
最小值 |
最大值 |
封装器类型 |
boolean |
1-bit |
– |
– |
Boolean |
char |
16-bit |
Unicode 0 |
Unicode 216- 1 |
Character |
byte |
8-bit |
-128 |
+127 |
Byte |
short |
16-bit |
-215 |
+215 – 1 |
Short1 |
int |
32-bit |
-231 |
+231 – 1 |
Integer |
long |
64-bit |
-263 |
+263 – 1 |
Long |
float |
32-bit |
IEEE754 |
IEEE754 |
Float |
double |
64-bit |
IEEE754 |
IEEE754 |
Double |
void |
– |
– |
– |
Void1 |
Java的数组:
Java的一项主要设计目标就是安全性. 创建对象数组时,实际创建的是一个句柄数组。而且每个句柄都会自动初始化成一个特殊值,并带有自己的关键字:null(空)。
2.3对象的清除
{
String s = new String("a string");
} /* 作用域的终点 */
那么句柄s会在作用域的终点处消失。然而,s指向的String对象依然占据着内存空间。在上面这段代码里,我们没有办法访问对象,因为指向它的唯一一个句柄已超出了作用域的边界。Java垃圾收集器会自动处理防止程序员忘记释放内存造成的”内存溢出”.
2.4 新建数据类型:类
定义一个类时,可以在类里设置数据成员(字段)和成员函数(方法).
如果不对数据成员进行初始化,它们会获得一个默认值.
主类型 默认值
Boolean false
Char '\u0000'(null)
Byte byte)0
Short (short)0
int 0
long 0L
float 0.0f
double 0.0d
局部变量不会得到默认值,如果忘记复制会得到一条编译器错误.