2.1 用引用操纵对象
如果想要操纵一个词或者一个句子,则可以创建一个String引用:String s;这里所创建的s只是一个引用并不是对象,如果向s发送消息则会产生一个错误。这是因为此时s实际上没有与任何事物相关联。因此,一种安全的做法是:创建一个引用时便进行初始化。
2.2 存储数据的区域
有五个不同的地方可以存储数据:
1)寄存器:最快的存储区,不能够直接控制
2)堆栈:位于通用RAM中,可以通过堆栈指针从处理器哪里获得直接支持。Java 虚拟机必须知道存储在堆栈内的所有项的确切生命周期,以便上下移动堆栈指针。对象引用存储在堆栈中。
3)堆:一种通用的内存池(位于RAM),用于存放所有的Java对象。堆不同与堆栈的好处是:编译器不需要是知道数据在堆里存活多长时间。
4)常量存储:常量值通常直接存放在程序代码内部,这样是安全的,因为他们永远不会被改变。
5)非RAM存储:如果数据完全存活与程序之外,那么它可以不受程序的控制,在程序没有运行时也可以存在。其中两个基本例子是流对象和持久化对象。
2.2.2 特例:基本类型
用new 创建一个很“小”的变量(存储在堆里),往往效率不是很高。因此,这些基本类型创建一个并非是引用的“自动”变量,这个变量存储值,并置于堆栈中,因此更加高效。