您的位置:首页 > 编程语言 > Java开发

《Java编程思想》第四版读书笔记 第六章

2016-05-07 00:00 274 查看
6.1

文中提到“Java可运行程序是一组可以打包并压缩为一个JAR的.class文件。Java解释器负责这些文件的查找、装载和解释”。注释中又提到“Java中并不强求必须要使用解释器。因为存在用来生成一个单一的可执行文件的本地代码Java编译器”。这里实际上是提到了JVM的两种执行方式,编译器将java文件编译成class文件后,具体的执行方式有两种:

(1)解释执行,将字节码视为脚本,Java解释器解释成本地方法;

(2)由JIT编译成本地机器码执行。(JIT可见第五章的读书笔记)

如果使用package语句,它必须是文件中除注释外的第一句程序代码。

文中提到Java包的命名全部使用小写字母,应该是官方的一种规范,编码测试时使用大写字母也可,不过eclipse似乎在看待包时不区分大小写。

CLASSPATH环境变量包含一个或多个目录,用作查找class文件的根目录。在使用JAR文件时,必须在CLASSPATH路径中将JAR文件的实际名称写清楚,而不仅是指明它所在的位置目录。

作者提到,Java去掉了C的条件编译功能,因为它大多数时候是用于解决跨平台问题的。而Java本身可以自动跨平台。条件编译的另一个用途是,调试环境和生成环境的切换。在Java中可以通过改变包来实现。比如练习3中提到的在debug包和debugoff包中包含一个名字相同的类,由测试环境切换到生产环境时把包由debug切换到debugoff。

练习3中的翻译有一些问题,大概意思应是:第一个版本将String参数显示在控制台上,第二个版本什么都不做。

6.2

作者再次强调:不要误认为Java总是将当前目录视作是查找行为的起点之一。如果你的CLASSPATH之中缺少“.”作为路径之一的话,Java就不会查找那里。

将构造函数设置为private有两个效果:

第一,控制如何创建对象,阻止别人直接访问某个构造函数;

第二,阻碍对此类的继承(如果所有构造函数都是private)。

protected也提供包访问权限

练习6读起来让我有些费解,查了一下英文原版,我的翻译是这样的:

创建一个带有protected数据的类;并创建在同一文件中的另一个类,这个类带有一个方法操作第一个类的protected数据。

6.3

有两个重要的原因,将权限的边界划在了数据类型的内部:

第一个原因是要设定客户端程序员可以使用和不可以使用的界限。可以在结构中建立自己的内部机制,不必担心客户端程序员会偶然的将内部机制当作是他们可以使用的接口的一部分;

第二个原因是接口和具体实现进行分离。如果结构是用于一组程序之中,而客户端程序员除了可以调用public方法之外什么也不可以做,那么代码编写者就可以随意更改不是publicde 代码,而不会破坏客户端代码。

6.4

编译单元内(一个java文件内)可以完全不带public的类。在这种情况下可以随意对文件进行命名。

除内部类以外,类既不可以是private的也不可以是protected。所以对于类的访问权限仅有两个选择包访问权限或public。

P123第一段最后一句话根据上下文有些难以理解。我的理解是作者从本段开始处的讨论类的访问修饰符,跳跃到讨论将类的构造函数设置成private,这样虽然无法创建该类的对象依旧可以访问该类的public static函数。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: