java预定义了类和接口
java源程序构成
(1)package语句
(2)import语句
(3)类定义
package语句表示该程序默认的包,只能有一个或者没有。
import可以引入其他类库中的类,以便使用。
类定义至少应有一个。每一个都由类头定义和类体定义两部分组成。
类修饰符
public 将一个类声明为公共类,它可以被任何对象访问
abstract 将一个类声明为抽象类,它没有实现方法,需要子类提供方法的实现,所以不能创建该类的实例
final 将一个类声明为最终类即非继承类,表示他不能被其他类继承
缺省 缺省修饰符时,表示只有在相同包中的对象才能使用这样的类
成员变量
public 公共访问控制符,指定该变量为公共的,它可以被任何对象的方法访问
private 私有变量控制符。指定该变量只允许自己类的方法访问,其他任何类(包括子类)中的方法均不能访问此变量。
protected 保护访问控制符。指定该变量只可以被它自己的类及其子类或同一包中的其它啊类访问,在子类中可以覆盖此变量。
缺省 缺省访问控制符时,则表示在同一个包中的其他类可以访问此成员变量,而其他包中的类不能访问该成员的变量
final 最终修饰符。指定此变量的值不能改变。
static 静态修饰符。指定该变量被所有对象共享,即所有的实例都可使用该变量。
transient 过渡修饰符。指定该变量是一个系统保留、暂无特别作用的临时性变量。
volatile 易失修饰符。指定该变量可以同时被几个线程控制和修改。
快照图(Snapshot diagrams)能代表程序运行时的各种状态——它的栈(即方法和局部变量)和它的堆(即现在存在的对象)。
具体来讲,使用快照图有以下优点:
- 在课堂上和会议上与同学交流
- 解释一些概念例如原始类型 vs. 对象类型不可更改的值 vs. 不可更改的引用, 指针别名, stack栈 vs. 堆heap, 抽象表达 vs. 具体表达.
- 能够帮助你解释你的工程的设计思想
- 为以后的课程做铺垫(例如MIT 6.170中的对象模型)
Java API 文档
在之前的讲义中已经多次使用java类的文档链接,它们都是Java platform API的一部分。
API是 应用编程接口(application programming interface )的简称。比如Facebook开放了一个供你编程的API(实际上不止一个,因为需要对不同的语言和架构开放不同的API),那么你就可以用它来写一个和Facebook交互的应用。
- java.lang.String 是
String
类型的全称。我们仅仅使用"双引号"
这样的方式就可以创建一个String
类型的对象。 - java.lang.Integer 和其他原始包装器类。在多数情况下,Java都会自动地在原始类型(如int)和它们被包装(wrapped,或者称为“封装,boxed”)之后的类型之间相互转换。
- java.util.List 就像Python中的列表,但是在Python中,列表是语言的一部分。在Java中,
List
需要用Java来具体实现。 - java.util.Map 就像Python的字典。
- java.io.File 用于表示硬盘上的文件。让我们看看
File
对象提供的方法:我们可以测试这个文件是否可读、删除这个文件、查看这个文件最近一次被修改是什么时候... - java.io.FileReader 使我们能够读取文本文件。
- java.io.BufferedReader 让我们高效地读取文本文件。它还提供一个很有用的特性:一次读取一整行。