尽管Java是基于C++的,但是相比之下,Java是一种更”纯粹“的面向对象程序设计语言。
用引用操纵对象
操纵的标识符实际上是对象的一个”引用“(reference)。可以想象成用遥控器(引用)来操纵电视机(对象)。
此外,即使没有电视机,遥控器亦可独立存在。你拥有一个引用,并不一定需要有一个对象与它关联。例如创建一个String引用:
String s;
这里创建的只是引用,并不是对象。此时向s发送一个消息,会返回一个运行时错误。这是因为,此时s实际上没有与任何事物相关联。一种安全的做法是:创建一个引用的同时便进行初始化。
String s = "asdf";
必须由你创建所有对象
new关键字的意思是:给我一个新对象。
String s = new String("asdf");
存储到什么地方
有五个不同的地方可以存储数据:
- 寄存器:你不能直接控制。
- 堆栈:某些Java数据存储于堆栈中——特别是对象引用,但是Java对象并不存储于其中。
- 堆:用于存放所有的Java对象。
- 常量存储:直接存放在程序代码内部。
- 非RAM存储:数据完全存活于程序之外,在程序没有运行时也可以存在。两个基本的例子是流对象和持久化对象。
特征:基本类型
boolean, char, byte, short, int, long, float, double, void.
BigInteger, BigDecimal.
Java中的数组
Java确保数据会被初始化,而且不能在它的范围之外被访问。这种范围检查,是以每个数组上少量的内存开销及运行时的下标检查为代价的。换来的是安全性和效率的提高。
永远不需要销毁对象
作用域(scope)
在作用域里定义的变量只可用于作用域结束之前。
对象的作用域
假如你采用代码:
{
String s = new String("a string");
}
s在作用域终点就消失了,然而,s指向的String对象仍继续占据内存空间。
Java的垃圾回收器用来监视用new创建的所有对象,辨别那些不会再被引用的对象,并且释放这些对象的内存空间。
(未完待续)
网友评论