首页 > 图书中心 > Java JDK 8学习笔记

前言

你拿起了这本书,翻开这篇序,我有了机会问你一个问题:“为什么想翻开这本书?”

“当然是想学Java啊!笨蛋(作者)!”

翻开一本书,无非是想从书中得到知识,只是为何你要得到书中的知识,才是我想知道的答案,而这个答案决定了你在取得知识的过程中是否快乐!

多数人在取得知识的过程中并不快乐,因而只能幻想着取得知识之后,就能拥有快乐,我们的社会也不断塑造着这样的幻想……学会××之后就可以“找到工作”“年薪百万”“进外企”……不少人在完成买书或报名课程的那一瞬间,就彷佛看到童话故事结尾幸福又快乐的日子,甚至取得知识时花费越高,就越成为一种支持这自我满足的依据。

取得知识的过程中快乐很重要,可惜的是,多数教育并不将取得知识过程中是否快乐这件事摆在优先,甚至强调为了能拥有幸福又快乐的结局,你必须忍耐学习过程中种种不快乐的事情,有的人可能从没了解到取得知识的过程中也能够快乐这件事,也许你也早就忘了……

“不就是学个Java,跟快乐有什么关系!”

如果你学的过程中不快乐,很快地,你就会对学习的对象感到厌烦,无法体验到逐步成长的喜悦,享受不到解决问题的成就感,失去探索更高级知识的动力,就算勉为其难地完成了学习过程,开始用着似懂非懂、半生不熟的知识闯荡江湖,紧接而来的是害怕着你当初不懂现在也不想搞懂的知识,也畏惧着别人带进来的新知识,只要有你参与的东西,多半掺杂了一团浆糊,造成了伙伴的困扰也伤害了自己,幸福与快乐的日子永远不会到来,你在学习的过程也没有过快乐,真的是亏大了!

只是想着学习的过程中是否快乐,结局难道不重要吗?网络上对程序设计这块有句名言“程序是照你写的跑,不是照你想的跑”,事实上确实是如此,不过“就人生来说的话,不会照你想的跑,也不会照你规划的进行”,万一结局不是我所想象的,至少学习过程我乐在其中,以后有没有用那就再说了!

“就人生来说的话,不会照你想的跑,也不会照你规划的进行。”简而言之就是世事难料,现在当红的技术难保日后不会没落,想当预言家,幻想能够选对一项知识,在苦痛学习过程之后得到美满结局,这是很没有保障的,现在冷门的知识也有可能咸鱼翻身,到时是不是感觉赚很大是一回事,不过届时你也许只会想着“其实我当时只是觉得好玩”! 

林信良  

2015年1月

导    读

这份导读让你可以更了解如何使用本书。

新旧版差异

就目录上来说,你可以看出的差异是上一版为16个章节,新一版为18个章节,第12章Lambda无疑是新的章节,也是JDK8最重要的新增功能。第13章“时间与日期”,一开始先谈了对时间与日期应有的基本知识,然后将旧版中的Date与Calendar做了更详细介绍,因为有许多现存API仍在使用它们,紧接着该章介绍了JDK8新时间与日期API。

第14章“NIO与NIO2”一开始谈了NIO的基础,接着将旧版的NIO2也放进该章。第15章“通用API”为旧版本“通用API”,该章删除了Date与Calendar、NIO2,并将一些JDK8的新增功能放了进去。

当然,JDK8中还有不少新增的小功能,散落在各章节中适当的地方介绍,如果发现页侧有 图标,表示提及JDK8新功能,本书亦提供有JDK8新功能快速查询目录。

全书的程序代码都做了重新审视与修改,主要着重在增加可读性,每个方法片段尽量控制不超过15行,在9.1.6节简介过Lambda之后,在可能且有助于可读性的情况下,会使用Lambda相关语法或API来实作程序范例。

旧版中有个“窗口程序设计”章节,在新版中没有消失,只不过被移至附录B,这多半表示了Java在窗口程序这块的地位,当然,Java有JavaFX这项技术,能否扩展Java在窗口程序的市场仍有待观察。“窗口程序设计”章节移至附录,主要是保留给对窗口程序仍有兴趣的读者。

字型

本书正文中与程序代码相关的文字,都用固定字体来加以呈现,以与一般名词相区别。例如,JDK是一般名词,而String为程序代码相关文字,使用了固定字体以区分。

程序范例

你可以在以下网址下载本书的范例:

? http://www.tupwk.com.cn/downpage

? http://books.gotop.com.tw/download/Acl042200

本书许多的范例都使用完整程序操作来展现,当看到以下程序代码示范时:

ClassObject Guess.java

package cc.openhome;

import java.util.Scanner;

import static java.lang.System.out;

public class Guess {

    public static void main(String[] args) {

        Scanner scanner = new Scanner(System.in);

        int number = (int) (Math.random() * 10);

        int guess;

        

        do {

            System.out.print("猜数字(0 ~ 9):");

            guess = scanner.nextInt();

        } while(guess != number);

        

        out.println("猜中了...XD");

    }

}

范例开始的左边名称为ClassObject,表示可以在范例文件的samples文件夹的各章节文件夹中找到对应的ClassObject项目;而右边名称为Guess.java,表示可以在项目中找到Guess.java文件。如果程序代码中出现标号与提示文字,表示后续的正文中,会有对应于标号及提示的更详细说明。

原则上,建议每个项目范例都亲手动作撰写,但如果由于教学时间或操作时间上的考虑,本书有建议进行的练习。如果在范例开始前有个 图标,例如:

Game1  SwordsMan.java

package cc.openhome;

public class SwordsMan extends Role {

    public void fight() {

        System.out.println("挥剑攻击");

    }

}

表示建议范例动手操作,而且在范例文件的labs文件夹中会有练习项目的基础,可以打开项目后,完成项目中遗漏或必须补齐的程序代码或设定。

如果使用以下的程序代码呈现,表示它是一个完整的程序内容,但不是项目的一部分,主要用来展现一个完整文档如何撰写:

public class Hello {

     public static void main(String[] args) {

         System.out.println("Hello!World!");

     }

}

如果使用以下的程序代码,则表示它是个代码段,主要展现程序撰写时需要特别注意的片段:

SwordsMan swordsMan = new SwordsMan();

...

System.out.printf("剑士 (%s, %d, %d)%n", swordsMan.getName(), 

        swordsMan.getLevel(), swordsMan.getBlood());

Magician magician = new Magician();

...

System.out.printf("魔法师 (%s, %d, %d)%n", magician.getName(), 

        magician.getLevel(), magician.getBlood());

操作步骤

本书将IDE进行设定的相关操作步骤也作为练习的一部分,你会看到如下的操作步骤说明:

(1) 选择“文件”|“新建项目”命令,在弹出的“新建项目”对话框的“类别”列表中选择Java,在“项目”列表中选择“Java应用程序”,接着单击“下一步”按钮。

(2) 在“项目名称”文本框中输入项目名称Hello2,在“项目位置”文本框中输入C:\workspace。注意,“项目文件夹”会储存至C:\workspace\Hello2。

(3) 在“创建主类”文本框中输入cc.openhome.Main,这表示会有个Main类放在cc.openhome包,当中会自动建立main()程序进入点的方法,接着单击“完成”按钮建立项目。

如果操作步骤旁有个 图标,表示范例文件的videos文件夹中对应的章节文件夹有操作步骤的视频,可观看它以更了解实际操作过程。

提示框

在本书中会出现以下提示框:

针对课程中所提到的观点,提供一些额外的资源或思考方向,暂时忽略这些提示对课程进行并没有影响,但有时间的话,针对这些提示做阅读、思考或讨论是有帮助的。

针对课程中所提到的观点,以提示框方式特别呈现出必须注意的一些使用方式、陷阱或避开问题的方法,看到这个提示框时请集中精神阅读。

附录

范例文件包括本书中所有范例,提供NetBeans范例项目,附录A说明如何使用这些范例项目,附录B则收录了上一版的“窗口程序设计”一章的内容。

联系作者

若有本书堪误反馈等相关书籍问题,可通过网站与作者联系。网址如下:

http://openhome.cc

版权所有(C)2023 清华大学出版社有限公司 京ICP备10035462号 京公网安备11010802042911号

联系我们 | 网站地图 | 法律声明 | 友情链接 | 盗版举报 | 人才招聘