15年8月份买了一本Java编程思想第四版中文版。之所以买中文版是因为我试读了同事的英文版发现自己英语水平还是有限,单词虽然认识,但对很多句子把握不准,这样看书太慢了,要理解英文还要理解技术有些hold不住。买了之后断断续续的看到现在,看了400多页了,看到了泛型一章。从15年8月份到元旦,中间还看了本周志明著的《深入理解java虚拟机-JVM高级特性与最佳实践》对JVM有了初步的了解。对于内存布局、垃圾回收、类加载、字节码等概念不再那么模糊。

Java编程思想一书已经读了正好一半了,很有感触。想在这里写下来分享给那些像我这样想看这本书却迟迟不敢开始的人们。

1)Java编程思想这本书给我的最大印象是介绍技术比较详细而深入,不仅告诉你怎么做,而且会说为什么Java是这样做的。作者Bruce Eckel也是C++编程思想的作者,对C++和Java的认识都是大师级的,所以他经常会对比Java和C++,告诉你Java都替程序员避免了C++的哪些坑,某些实现Java比C++好在哪里,又差在什么地方。这样的讲述其实就像在跟大师对话一样,不但能学到Java的知识,还能学习大师的思维。

2)看这本书时,一定要把书中的例子源码下载下来,自己真正的跑例子,有什么疑问直接可以通过修改例子验证自己的想法。这比单纯的看书学习效果是要好非常多的。

3)虽然网上很多人说这本书是入门级的,初学者必读。但我不推荐没有Java基础,想学习Java的人通过这本书入门Java。因为这本书讲得太详细,太厚了,很多的内容不只是基础,拿这本书入门可能会令人感到沮丧。找一本两三百页的书,或者从网上看一些Java入门的视频是比较好的选择。

4)上面也说到了,这本书里一些内容不是入门知识,需要对Java有一定的认识以及足够多的研究之后才能弄懂书中的一些内容。对我而言,本书的泛型一章中的一些内容我看得晕晕乎乎的,只能理解泛型的大概,没能再深入。所以,看这本书时,我的建议是:如果觉得书中一些地方挺难懂,也要硬着头皮读下去,书中例子认真研究,至少都看懂,跑一遍。实在不懂的,查资料也搞不懂的,先跳过去,等读第二遍、第三遍的时候说不定会有恍然大悟的感觉。

5)看这本的中间我还看了一本书《深入理解Java虚拟机-JVM高级特性与最佳实践》,收获非常大。而且我通过读《深入》这本书养成了一个好习惯:有些内容读一遍很多不大懂;但第二天读第二遍的时候轻松了不少,理解了不少;过几天再读第三遍的时候发现都能懂了!所以在读《Java编程思想》的时候我也用了这种读书方法,一遍读不懂的,读两遍,过几天再读一遍。这样读下来,发现虽然书读的比较慢,但理解的比较好,收获很大。

6)还有一点是,读书的时候要相互对照,比如阅读《Java编程思想》的持有对象一章的时候,我会对照《深入理解Java虚拟机》一书中的类加载一章以及JVM内存布局与对象创建的章节。这样理解起来,Java语言层面的东西理解了,JVM层面的知识也知道了。效果非常好。

另外,很多人说技术更新太快,读书都是比较过时的东西,最好是去官网看文档。我同意这个观点,我也会去看文档。但是读书还是很有必要的,为什么呢?在我看来,读书不仅能学到想要的技术,更重要的是书里的文字都是作者精心完成的,是作者思想的精华,读好书就像在跟大师交流,你能学习到大师们的思考方式,获得大师们才有的眼界。这是看文档得不到的。当然,不能买太过时的书。尽量买大师写的、最新版的。吐槽一下:坐落于五道口的国内某一流大学里的一个出版社经常出一些技术书,大家要擦亮眼睛,他们很会抄袭,那种书就是为了挣钱。买书尽量买NB的个人的,那是作者的心血,都是精华。一大堆人写的,算了吧,那是书吗?知识的堆积而已,根本没有思想在里面。当然,我不否认那里有NB的人写了NB的书,我只是吐槽一下鸟大了什么林子都有,买书要擦亮双眼。

Java编程思想阅读收获的更多相关文章

  1. 【Java编程思想阅读笔记】Java数据存储位置

    Java数据存储位置 P46页有感 一.前置知识 栈是由系统自动分配的,Java程序员对栈没有直接的操作权限, 堆是所有线程共享的内存区域,栈 是每个线程独享的. 堆是由程序员自己申请的,在使用new ...

  2. List接口方法使用(PS:Java 编程思想阅读小结)

    1.用代码说话 package JavaProject; import java.util.*; public class A{ public static void main(String[]arg ...

  3. java编程思想阅读记录

    第五章:初始化与清理 1.构造器确保初始化 构造器采用与类名相同的方法. 创建对象时,将会为对象分配存储空间,并调用相应的构造器.这就确保了在你能操作对象之前,它就已经恰当的被初始化了. 垃圾回收器负 ...

  4. 《Java编程思想》阅读笔记二

    Java编程思想 这是一个通过对<Java编程思想>(Think in java)进行阅读同时对java内容查漏补缺的系列.一些基础的知识不会被罗列出来,这里只会列出一些程序员经常会忽略或 ...

  5. 《Java编程思想》阅读笔记一

    Java编程思想 这是一个通过对<Java编程思想>(Think in java)第四版进行阅读同时对java内容查漏补缺的系列.一些基础的知识不会被罗列出来,这里只会列出一些程序员经常会 ...

  6. JAVA编程思想——分析阅读

    需要源码.JDK1.6 .编码风格参考阿里java规约 7/12开始 有点意识到自己喜欢理论大而泛的模糊知识的学习,而不喜欢实践和细节的打磨,是因为粗心浮躁导致的么? cron表达式使用 设计能力.领 ...

  7. [Java编程思想-学习笔记]第3章 操作符

    3.1  更简单的打印语句 学习编程语言的通许遇到的第一个程序无非打印"Hello, world"了,然而在Java中要写成 System.out.println("He ...

  8. 《java编程思想》读书笔记(一)开篇&第五章(1)

    2017 ---新篇章  今天终于找到阅读<java编程思想>这本书方法了,表示打开了一个新世界. 第一章:对象导论 内容不多但也有20页,主要是对整本书的一个概括.因为已经有过完整JAV ...

  9. MyEclipse导入ant项目——Java编程思想

    北门煎饼东门串儿: <JAVA编程思想(Think in Java)>一书中提供了大量源代码,可是项目是用ant构建的.对于用惯了eclipse,netbeans等IDE的同学们可能有些手 ...

随机推荐

  1. [LeetCode] Reverse Words in a String III 翻转字符串中的单词之三

    Given a string, you need to reverse the order of characters in each word within a sentence while sti ...

  2. [LeetCode] Next Greater Element I 下一个较大的元素之一

    You are given two arrays (without duplicates) nums1 and nums2 where nums1’s elements are subset of n ...

  3. 手动导入xmpp后,再使用cocoapods的时候出现的问题

    最新的cocoapod导入xmpp的时候,会出现循环依赖,所以撸主选择了手动导入. 一开始还用的挺开心的,后来,使用cocoapods导入其他的框架,发现调用的时候总是报错. Undefined sy ...

  4. 【Matplotlib-01】Python 绘图库 Matplotlib 入门教程

    环境: Windows10 python3.6.4 numpy1.14.1 matplotlib2.1.2 工具:Cmder 目录: 1.线性图 2.散点图 3.饼状图 4.条形图 5.直方图 例1: ...

  5. hibernate--CRUD初体验

    hibernate的crud操作初体验. 看具体实例 package com.fuwh.model; import javax.persistence.Column; import javax.per ...

  6. [BZOJ 3456]城市规划

    Description 题库链接( bzoj 权限题,可以去 cogs 交♂ 题库链接2 求含有 \(n\) 个点有标号的简单无向联通图的个数.方案数对 \(1004535809(479\times ...

  7. [NOIp 2016]换教室

    Description 对于刚上大学的牛牛来说,他面临的第一个问题是如何根据实际情况申请合适的课程. 在可以选择的课程中,有 $2n$ 节课程安排在 $n$ 个时间段上.在第 $i$($1 \leq ...

  8. [Codeforces]848C - Goodbye Souvenir

    题目大意:n个数字,m次操作,支持修改一个数字和查询一个区间内每种数字最大出现位置减最小出现位置的和.(n,m<=100,000) 做法:把每个数字表示成二维平面上的点,第一维是在数组中的位置, ...

  9. 树链剖分模板(BZOJ3083)

    实现了路径修改,子树查询,及换根. 换根其实很简单,分三种情况讨论,画画图就明白了. #include <cstdio> #include <algorithm> using ...

  10. C语言程序设计第一次作业1

    (一)实验总结 1. 圆面积问题 1:求圆面积和周长 (1)输入圆的半径,计算圆的周长和面积. (2) (3) 2:判断闰年 (1)输入一个四位年份,判断其是否是闰年.闰年的判别条件是该年年份能被4整 ...