文档章节

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

一万
 一万
发布于 2016/05/07 14:41
字数 1068
阅读 135
收藏 1

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

© 著作权归作者所有

共有 人打赏支持
一万
粉丝 28
博文 102
码字总数 173386
作品 0
朝阳
程序员
Android--面试中遇到的问题总结(三)

《Android 开发工程师面试指南 LearningNotes 》,作者是陶程,由梁观全贡献部分。大家可以去知乎关注这两位用心的少年。这份指南包含了大部分Android开发的基础、进阶知识,不仅可以帮助准备...

sealin
2017/02/22
0
0
读书笔记之《Java并发编程的艺术》-线程池和Executor的子孙们

读书笔记部分内容来源书出版书,版权归本书作者,如有错误,请指正。 欢迎star、fork,读书笔记系列会同步更新 git https://github.com/xuminwlt/j360-jdk module j360-jdk-thread/me.j360....

Hi徐敏
2015/11/11
0
1
读书笔记之《Java并发编程的艺术》-并发编程基础

读书笔记部分内容来源书出版书,版权归本书作者,如有错误,请指正。 欢迎star、fork,读书笔记系列会同步更新 git https://github.com/xuminwlt/j360-jdk module j360-jdk-thread/me.j360....

Hi徐敏
2015/11/11
0
8
读书笔记之《Java并发编程的艺术》-并发编程容器和框架(重要)

读书笔记部分内容来源书出版书,版权归本书作者,如有错误,请指正。 欢迎star、fork,读书笔记系列会同步更新 git https://github.com/xuminwlt/j360-jdk module j360-jdk-thread/me.j360....

Hi徐敏
2015/11/11
0
1
读书笔记之《Java并发编程的艺术》-java中的锁

读书笔记部分内容来源书出版书,版权归本书作者,如有错误,请指正。 欢迎star、fork,读书笔记系列会同步更新 git https://github.com/xuminwlt/j360-jdk module j360-jdk-thread/me.j360....

Hi徐敏
2015/11/11
0
0

没有更多内容

加载失败,请刷新页面

加载更多

Android WebView制作简易浏览器

最终效果 先创建一个WebView控件,其他的就是通过线性布局在上方加入网址输入框和两个按钮 <WebView android:id="@+id/act_webview_wv" android:layout_width="ma...

lanyu96
11分钟前
1
0
解决MacOS升级系统Sierra到Mojave后git报错

错误信息 升级MacOS Sierra到Mac Mojave后执行git命令报错: xcrun: error: invalid active developer path (/Library/Developer/CommandLineTools), missing xcrun at: /Library/Developer/......

阿dai
12分钟前
1
0
兄弟连区块链教程以太源码分析CMD深入分析(一)

cmd包分析 cmd下面总共有13个子包,除了util包之外,每个子包都有一个主函数,每个主函数的init方法中都定义了该主函数支持的命令,如 geth包下面的: func init() { // Initialize the...

兄弟连区块链入门教程
13分钟前
1
0
Titan Framework MongoDB深入理解1

在TitanFrameWork框架中,已经集成了MongoDB的各个功能,现在我们对框架内部的一些重要类进行分析与解读。 MongoDBConverter 在Titan框架中,比较重要的一个接口就是MongoDBConverter,它是作...

云季科技
18分钟前
1
0
SpringBoot集成Quartz

SpringBoot集成Quartz 什么是Quartz Quartz is a richly featured, open source job scheduling library that can be integrated within virtually any Java application - from the smalle......

Grittan
23分钟前
1
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部