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

6.1java

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

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

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

 

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

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

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

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

练习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函数。

相关文章
相关标签/搜索