第二章的标题是“一切都是对象”,Bruce按照声明对象->定义类->构建Java程序的顺序,介绍了不少细节,现将这些知识点梳理如下:
个人总结的思路是(1)定义类->(2)实例化对象->(3)调用对象的方法(向对象发送消息)
(1)定义类
[访问修饰符] class 类名 {
[访问修饰符] [静态修饰符] 类型 成员变量名; //定义成员变量(字段)
[访问修饰符] [静态修饰符] 返回值类型 成员函数名(参数列表){ //定义成员函数(方法)
//方法体
}
}
Java中,如果成员变量为基本数据类型,在其定义时若未指定初始值,Java也会确保它获得一个默认值,此特点不适用于局部变量。
(2)实例化对象
实例化对象分两部分:定义对象的引用,为对象分配内存空间;两部分可以一起进行,也可以分开进行,例如:
String s = new String("abc"); 或者
String s;
s = new String ("abc");
引用和指针的相同与不同:二者的相同之处是都指向一块内存,其内容都是内存的地址;但引用的地址在初始化后是没法改变的,而指针是可以重新指定其他内存地址。
通过new的方式为对象分配内存,该内存空间具体指的是堆,Java中有垃圾回收器,不需要再去考虑内存释放的问题。
(3)调用对象的方法
在对对象进行实例化后,为了完成具体的功能,便需要调用对象的方法,调用方式是:
对象名.方法名(参数列表);
了解了上述内容还无法构建一个完整的Java程序,下面结合一个具体的实例补充其他重要的内容:
// Main.java
import java.util. * ;
import java.lang.System; // 其实这个是自动导入的,这里写出的目的是为了后面对import的描述
/** The first example program.
* Display a string and today's date.
* @author :pickuper
* @version :1.0
*/
public class Main{
public static void main(String[] args){
HelloJava hello = new HelloJava();
hello.printContent();
}
}
public class HelloJava{
public void printContent(){
System.out.println( " HelloJava " );
System.out.println( new Date());
}
}
(1)命名自定义类库(包):使用反转域名,使得命名空间唯一。
(2)使用其他类库:通过import导入包,格式参见示例程序,*是通配符,表示包含上级目录包含的全部类。
(3)static:一般情况下,属性和方法是依赖于对象的,即有了实例化的对象,才有了对象的属性,才能调用对象的方法;但用static声明类属性和方法后,二者便不再依赖于对象:对于static属性来说,一个类对应一个属性,即多个对象共享一个数据空间,而static方法则可以通过类名来调用,不需要引用对象名。
(4)注释与javadoc:后面进行详细介绍。