今天刚考完试,在5天以前的前4个月时间里,我很庆幸自己选了一个看书的学习途径。从上个学期的暑假到现学期的11周里面,读了《Thinking In Java》、《深入理解Java虚拟机》和《Effective Java》,感悟颇多。首先先说明一下,我以前是看视频学习的,就做过两三个学校的网站,都已经上线在使用。没做过什么特别高大上的东西,所以我是处在新手的角度去读书的,我也知道自己的理解很浅,不过,既然读过,想谈谈读后感。还有一点,该博客的标题只不过是吸引读者,博客只是谈谈上面提及书籍的特点,不存在对比的含义。
《Thinking In Java》是当之无愧的圣经!
我是在暑假读的,接近2个月,是英文原版第4版,也是为了12月份的6级考试。TIJ的知识点很全,它已经告诉读者Java语言的语法,包括对象的理解、运算符、控制语句、初始化和清除、访问权限、多态、接口、内部类、对象容器、错误异常、字符串、类型消息、泛型、数组、容器的深层、I/O流、、枚举、注解、并发、用户界面的内容。从内容上看,它有点像是API的简版,同时对知识点的阐述不会太深,但是比API又要深入。从可读性上看,它又比API通俗易懂,TIJ通过例子、比较把要说明的知识点串联在一起。举个例子,好比泛型章节,先与C++比较,引出Java的泛型,然后介绍简单语法,再然后介绍泛型的用法,像泛型接口、泛型方法、内部类的泛型等等,接着介绍通配符和类型参数等,最后介绍Java泛型的特点,类型擦除(从虚拟机的层面)和灵活的用法,像类型安全、最小化、转换等。是有一个层次关系的。在并发章节,除了介绍基本的语法外,还有一些API的类,CountDownLatch、CyclicBarrier、DelayQueue...,还讨论了并发的特性例如锁机制等。在容器章节,不仅介绍了各个容器的用法,还进行比较,最后对每个容器进行性能测试。所以TIJ是介绍了基本语法,再在基本的语法上去延伸,去思考。而且,它几乎每个知识点都有例子说明,例子也是比较完整的,我全是用vim敲的。不过,我认为TIJ最突出的一点是作者的文笔好!文字生动形象,语言诙谐易懂,即使是英文版的,读过去,虽然有不懂的单词,但是大体的意思还是可以理解的,可以说是一路畅通无阻,这点我是在读了《Effective Java》后才体会到的。综合起来,说TIJ是圣经不为过。
《Effective Java》是一把砍柴的利刃!
柴又粗又脆,就像Java代码一样,EJ好比利刃,一剑削断木柴。在讲它之前,我想黑一下作者的文笔,小学还没毕业吧,语句绕来绕去,难以理解,往往一句话要反复看好几遍。一开始看的是英文版第2版,后面看不下去,跟一朋友借了一本中文版的两本对照看,还是有点绕,看来翻译的也不怎么样。不过,吐槽归吐槽,它内容还真不错,与TIJ的基点不同,Ef的前提是你已经对Java的基本语法多多少少认识了,然后告诉你更加灵活的写法,让你的程序更优雅、高效、健壮、维护性好等。它通过一个个独立的小点来展示。倒真有点像API,写代码经验的API。TIJ告诉你怎么用,Ef告诉你怎样更高效去用。像接合抽象类与接口的抽象骨架类、工厂方法、写文档等等会令你感觉自己以前写的代码就是一堆垃圾。EJ重在理解,所以它的例子都比较精简,不会太累赘。有种工具书的感觉。
《深入理解Java虚拟机》带你走进桃花源!
Java虚拟机就好像是另外一个世界。该书有点偏向理论,它不是从代码程序的角度上去分析,而是从虚拟机的角度。当我敲完一个程序,编译运行出结果,这期间Java虚拟机对我写的程序做了什么事?Java虚拟机是如何管理我写的程序的?《深入理解Java虚拟机》对Java的内存机制、垃圾收集器、虚拟机工具、类文件、类加载机制、虚拟机字节码执行引擎、程序编译、代码优化、并发等方面都进行深入的讨论。我看的是周志明写的版本,中文的。其实我的感觉读了它之后,对我写代码没有什么提高,但是跟朋友吹起来那可是神器!他们一听我讲虚拟机像什么内存划分、堆、栈、新生代、eden区,CMS垃圾收集器,类加载过程、语法糖、逃逸分析...都觉得我很历害,其实没什么的,文科知识,背背而已。
以前有个大神说,你要干两年以上,才知道Java是干什么用的。现在看来,此言不虚!除了大一学C之外,剩下的恩宠都给了Java,慢慢理解,也越学越多,越学才感觉自己越渺小!
我!
是!!
拉!!!
圾!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!