• 思维导图学《On Java》基础卷


    说明#

    原来读过 《Java 编程思想(第 4 版)》,但是这个版本还是基于 Java 5 讲解。由于 Java 8 做出了非常大的改进(是 Java 变化最大的版本),且截止到 2022-07-22,Java 版本都更新到 18 了……原来那本书确实需要更新了。

    原作者 Bruce Eckel 又重新出版了新书:《On Java 中文版 基础卷》《On Java 中文版 进阶卷》。本位是对基础卷的思维导图笔记总结,略过了部分较为基础的章节,并未完全详尽书中所有知识点。

    本文地址发布在 https://github.com/LjyYano/Thinking_in_Java_MindMapping 上,GitHub 地址:链接,请在转载时标明原文链接~

    目录#

    有几个章节过于基础,没有放在思维导图上:

    • 02 安装 Java 和本书示例
    • 04 操作符
    • 05 控制流
    • 12 集合
    • 16 代码校验
    • 21 数组

    思维导图#

    导读#

    我的语言之局限,即我的世界之局限。这句话不仅适用于我们日常读写的语言,也适用于编程语言。很微妙的一件事是,一门语言会悄然无息地引导你进入某种思维模式,同时远离其他思维模式。Java 尤其如此。

    如果你了解一门语言的不足之处和局限性,当你遇到某个语言特性不可用时,就不会被卡住,以致无法继续。同时,因为你已经知晓其局限性,所以就可以更好地进行程序设计。

    Java 8 包含了许多基础和重要的改进,而由于 Java 一直严格遵守自己的向后兼容性承诺,做出这些改进无疑需要花费相当多的精力。

    如果一开始就将你的项目“发展”成一个有机的、进化的生命体,而不是像建造玻璃墙的摩天大楼一样进行一次性施工,你将获得更大的成功和更直接的反馈。

    相关链接:

    第 1 章 什么是对象#

    工具已经越来越不像机器,而是越来越像思维的一部分。

    所有编程语言都是一种抽象

    如果我可以将问题从表象中抽取出来,那么什么样的对象可以马上解决我的问题呢?

    第 3 章 一切都是对象#

    第 6 章 初始化和清理#

    第 7 章 实现隐藏#

    第 8 章 复用#

    第 9 章 多态#

    相关链接:

    第 10 章 接口#

    任何抽象都应该由真正的需求来驱动。接口应该是在必要时用来重构的东西,而不是在任何地方都多加一个间接层级,进而带来额外的复杂性。这种额外的复杂性影响很大,如果你让某人在克服这种复杂性上花费时间,而他最终却发现你添加接口只不过是为了“以防万一”,而非出于什么令人信服的其他理由,他就会质疑你做过的其他所有设计。

    相关链接:

    第 11 章 内部类#

    第 13 章 函数式编程#

    lambda 表达式和方法引用远非完美,我们要永远承受 Java 设计者在语言诞生初期的草率决定所导致的代价。lambda 在 Java 并非一等公民。这并不意味着 Java 8 没有大的改进,但确实意味着,像许多 Java 语法一样,最终会有一个让你感到不爽的临界点。

    相关链接:

    第 14 章 流#

    相关链接:

    第 15 章 异常#

    异常处理的优点之一,就是它使得你可以在某处集中精力处理你要解决的问题,而在另一处处理你编写代码产生的错误。

    Java 坚定地强调将所有的错误都以异常形式报告的这一事实,正是它远超过诸如 C++ 这类语言的长处之一。

    相关链接:

    第 17 章 文件#

    在非常难用的文件 I/O 编程存在多年之后,Java 终于简化了读写文件的基本操作。

    第 18 章 字符串#

    相关链接:

    第 19 章 反射#

    相关链接:

    第 20 章 泛型#

    在 Java 中,泛型是在这门语言发布了几乎 10 年后才引入的,所以向泛型的迁移问题是必须要考虑的,也对泛型的设计产生了很大冲击。结果就是,作为程序员的你,将因为 Java 设计者在创建 1.0 版本时缺乏远见而承受痛苦。

    有些语言对参数化类型采用了更简洁、影响更小的实现方法。不难想象,这样一种语言有可能成为 Java 的接班人,因为它完全采用了 C++ 对待 C 的方式:站在巨人的肩膀上,并看得更远。

    结语#

    在不少讨论中能听到这样的声音:“C++ 是一门设计拙劣的语言。”我则认为理解 C++ 和 Java 做出的各种决策有助于站在更高的位置看待问题。

    如同任何人类语言一样,Java 提供了一种表达概念的方式。如果使用得当,随着问题变得更庞大更复杂,这种表达工具将会比别的可供选择的语言更为简单、灵活。

    曾几何时,C++ 是编程语言界的“皇冠”,人们认为会永远如此。很多人也这么看 Java,但由于 JVM 的缘故,Java 已经使自己可以被轻而易举地替换掉了。现在,任何人都可以创建一门新的语言,并在短时间内使其像 Java 一样高效运行。但在以前,对于一门新的语言来说,大部分开发时间往往花在实现正确、高效的编译器上。

    在我写作本书时,Java 是世界上首屈一指的编程语言。然而 Java 终将老去,就像 C++ 那样,衰退到只会在某些特殊场合用到(甚至只用于支持遗留代码,因为 Java 不如 C++ 和硬件结合那么紧密)。但是 Java 无心插柳却已蔚然成荫的真正光辉之处是,它为自己的替代品创造了一条非常平坦的道路,即使 Java 本身已经到了无法再进化的地步。未来的所有语言都应该从中学习:要么创造一种可以不断重构的文化(如 Python 和 Ruby 做到的那样),要么让竞争者可以茁壮成长。

    链接#

    由于思维导图中的链接没法截图,按照先后顺序贴在下面:

    写在最后#

    思维导图是用亿图脑图 MindMaster制作的,之前重度使用了 Xmind 和 WPS,感觉还是亿图这个思维导图软件比较适合我。

    本文 GitHub 地址:链接,后续的《On Java 进阶卷》思维导图也会发布在这里。如果需要思维导图原件,请在 GitHub 私信获取~

  • 相关阅读:
    4. DDPM, DDIM, Analytic-DPM, Extended Analytic-DPM
    hyperf 模型批量更新数据
    redis 登录案例
    ssm+vue的个人时间管理系统(有报告)。Javaee项目,ssm vue前后端分离项目。
    建木v2.6.0发布
    程序员为什么要学习数据结构与算法?
    Excel VSTO开发9 -使用Form窗口
    CDN:网站性能的加速器 —— 选择最适合你的CDN服务商
    pytorch 实现线性回归(Pytorch 03)
    全量知识系统 详细程序设计 之“编程理念”(Q&A SmartChat)
  • 原文地址:https://www.cnblogs.com/510602159-Yano/p/16507997.html