2.1 用引用操作对象
在java中,一切都被视为对象,尽管一切都看作对象,但操纵的标识符实际上是对象的一个”引用“。
如果想操纵要给词或句子,则可以穿件一个String引用。
String s;
String s = "hello word"
但这里使用到java的一个特性,可以使用带引号的字符串进行初始化,通常,必须对对象采用一种更通用的初始化方法。
2.2 必须由你来创建对象
一旦创建了一个引用,就希望他能与一个对象关联,通常使用 new关键字来实现,new 关键字的意思是”给我一个新的对象“
String s = new String("Hello word!")
他不仅表示给我一个新的字符串,并通过一个字符串给出了怎样产生这个String的信息。
2.2 .1 储存到什么地方
程序运行时对象是怎样放置安排的呢,特别是内存是怎样分配的。
有五个不同的地方可以储存数据:
1 寄存器
这是最快的存储区,因为他不同于其他存储位置,它位于处理器内部 。不能直接控制。
2 堆栈
创建程序时,java需要知道储存在堆栈内所有项的生命周期,以便上下移动堆栈指针,这一约束限制了程序的灵活性,所以虽然某些java数据存储在堆栈中 --特别是对象的引用,但是java对象并不储存于其中。
3 堆
一种通用内存池,用于储存所有java对象。
4 常量储存
常量值通常是存储在代码内部。
5 非RAM存储
如果数据完全存活于程序外部,那么他可以不受程序的任何控制,两个基本粒子就是流对象和持久化对象。在持久化对象中,对象被存放在磁盘上。
2.2.2 特例:基本类型
基本类型,不用new来创建对象,而是创建一个并非是引用的”自动变量“,这个变量直接储存值,并置于堆栈中。
每个基本类型都有相应的包装器类,在JAVA SE5中,自动装箱拆箱功能将基本类型与相应的包装器类进行转换。
高精度数字
BigInteger 和 BigDecimal 虽然大体上属于包装器类的范畴,但他们并没有对应的基本类型。
BigInteger :支持任意精度的整数。
BigDecimal:支持任意精度的定点数,例如何以用它进行精确的货币计算。
2.2.3 java中的数组
数组就是一段连续的内存块。
创建一个数组实际上是创建了一个引用数组,并且每个引用都会自动初始化为null,一旦java中看到null,就知道这个引用没有指向任何对象。
还可以 创建基本类型的数组,编译器也会确保这一类型的数组的初始化,他会将数组所占的内存置为零。