第二章 一切都是对象
用引用(reference)操纵对象
String s = "asdf";
String s;
但这里所创建的只是引用,并不是对象。如果此时向s 发送一个消息,就会返回一个运行时刻错误。这是因为此时s 实际上没有与任何事物相关联(即没有电视机)。因此,一种安全的做法是:创建一个引用的同时便进行初始化。String s = "asdf";
必须由你创建所有对象
有六个不同的地方可以存储数据:
1. 寄存器(register).2. 堆栈(stack).3. 堆(heap).4. 静态存储(static storage).5. 常量存储(constant storage).6. 非 RAM 存储.
对象作用域(scope of object)
Java 有一个“ 垃圾回收器”,用来监视用new 创建的所有对象,并辨别那些不会再被引用的对象。随后,释放这些对象的内存空间,以便供其它新的对象使用。也就是说,你根本不必担心内存回收的问题。你只需要创建对象,一旦不再需要,它们就会自行消失。这样做就消除了这类编程问题:即所谓的“内存溢出”,即由于程序员忘记释放内存而产生的问题。
创建新的数据类型:类
域(field)和方法(method)
当变量作为一个类的成员使用时,Java 才确保给定其默认值,以确保那些是基本类型的成员变量得到初始化(C++没有此功能),防止产生程序错误。但是,这些初始值对你的程序来说,可能是不正确的,甚至是不合法的。所以最好明确地对变量进行初始化.然而上述确保初始化的方法并不适用于“局部”变量(即并非是某个类的属性)。因此,如果在某个方法中有这样定义:
方法(Method)、参数(argument)和返回值(return value)
Static 关键字
通过Static 关键字,可以满足这两方面的需要。当你声明一个事物是Static 时,就意味着这个数据或方法不会与包含它的那个类的任何对象实例关联在一起。所以,即使从未创建某个类的任何对象,也可以调用其Static 方法或访问其Static 数据。通常,你必须创建一个对象,并用它来访问数据或方法。因为非Static 数据和方法必须知道它们一起运作的特定对象。由于在用Static 方法前,不需要创建任何对象.
in Java example program.
* Displays a string and today's date.
* @author Bruce Eckel
* @author www.BruceEckel.com
* @version 2.0
*/
public class HelloDate {
/** Sole entry point to class & application
* @param args array of string arguments
* @return No return value
* @exception exceptions No exceptions thrown
public static void main(String[] args) {
System.out.println("Hello, it's: ");
System.out.println(new Date());
}
} ///:~