憋了半个月的 PDF:精通 Java(一)

简介: 真诚的和大家说一句抱歉,因为最近家庭原因 + 我自己思想的懒惰,所以导致有一段时间没有更新技术文章,一直都在憋这一篇关于学习 Java 如何从入门到精通的文章,在没有发文的这段时间很煎熬,甚至无数次的想放弃写这篇文章,因为这篇文章不是很好写,我付出大量的时间和心血来收集大量的素材、研究大量的书本进而熔铸成这篇文章,希望对你有所帮助。

前言

真诚的和大家说一句抱歉,因为最近家庭原因 + 我自己思想的懒惰,所以导致有一段时间没有更新技术文章,一直都在憋这一篇关于学习 Java 如何从入门到精通的文章,在没有发文的这段时间很煎熬,甚至无数次的想放弃写这篇文章,因为这篇文章不是很好写,我付出大量的时间和心血来收集大量的素材、研究大量的书本进而熔铸成这篇文章,希望对你有所帮助。

PS:可能文章某些观点大家不认同,甚至学习路线大家不认可,请尽可能的喷我,我会心平气和的回复。文章中某些知识点不是很全面,我会在后面慢慢重构。

注意:文章中有大量的链接无法显示,我在文末汇总成为了 PDF,你可以直接在文末公众号领取!!!

其实学习 Java 学到什么程度算是精通,这个其实没有盖棺定论的,也不是说你拿个年薪几十万的 offer 就可以自诩精通了。另外,每当面试的时候简历上填个精通 offer 的家伙我就觉得很搞笑,没有几个熬得过开出门左拐的命运。但是我认为,如果市面上这些资料、书籍你都啃的差不多,你能在所有的 Java 程序员中跻身前 0.1% 的话,你就可以达到"精通" 这个阶段了,因为没人比你强了,你当然是精通了。

所以,我还是选择罗列一些知识点推荐给大家,如果你都能够掌握并且真正理解这些东西的话,那你就可以到了精通这个阶段了。

首先要学的是计算机基础知识,因为 Java 不是像 Python 那样简单,它是需要一定基础的,如果你上来直接硬肝 Java,那么 90% 的几率你会放弃。

因为要想学好 Java ,你就得理解什么是面向对象的设计思想,而面向对象的这种设计思想又不是刚开始学习编程的新人能够熟练掌握呢?那怎么办呢?这不是死局了吗?

其实,如果要想真正理解这种设计思想的话,你要首先学的不是 Java,而是 C 语言。

为什么呢?因为 C 语言是面向过程的,什么是面向过程和面向对象的设计思想呢?我给你举个例子你就知道了。

面向过程与面向对象的区别,由“如何把大象装进冰箱”来看:

一、面向过程

为了把大象装进冰箱,需要3个过程。

思路:

1、把冰箱门打开(得到打开门的冰箱)。

2、把大象装进去(打开门后,得到里面装着大象的冰箱)。

3、把冰箱门关上(打开门、装好大象后,获得关好门的冰箱)。

根据上面的思路,可以看到,每个过程都有一个阶段性的目标,依次完成这些过程,就能把大象装进冰箱。

二、面向对象

为了把大象装进冰箱,需要做三个动作(或者叫行为)。每个动作有一个执行者,它就是对象。

思路:

1、冰箱,你给我把门打开。

2、冰箱,你给我把大象装进去(或者说,大象,你给我钻到冰箱里去)。

3、冰箱,你给我把门关上。

依次完成这些动作,你就可以把大象装进去。

这里我只是举个例子,可能大家还是很懵逼,这里我就要给你推荐几本入门 C 语言的视频和书籍了。

关于书籍推荐,可以看看这篇回答

初学C语言,有什么好书推荐?

书一般是能够静下心来的人看的,一般初学者最大的问题就是很难静下心来编程,如果你觉得难以看得下去书的话,你可以看看这篇回答,里面的视频可以说很全了

有哪些优秀的c语言课程视频?

初学 C 语言周期大概是3 - 6 个月,学编程的捷径就是每天敲代码,比如 C primer plus 上面就有很多代码示例,你要对着敲,课后练习要跟着做,坚持 3 - 6 个月,你会感谢你自己的坚持。

学到这里,你就可以说 C 语言基本入门了。

如果 C 语言你能够坚持下来的话,那么 Java 入门,那会非常容易了,其原因有两点

  1. C 语言基本上可以说是高级语言的鼻祖,如果你 C 学得好,那么学其他语言都会非常容易。
  2. C 语言比 Java 稍微难点,而且有很多特性非常像,从一门比较难的语言 -> 一门难度中等的语言,那会变得很容易。

好了,那么从现在开始,我们就要进入 Java 的学习环节了。

学习 Java,我将会从三个阶段来介绍,分为初级、中级和高级

Java 基础

什么是初级 Java 的水平呢?我认为就是理解 Java 的语法规则、语言特性,这么说有点干瘪,直接上思维导图!

微信图片_20220416170608.jpg

就这一张图,如果你能把图中内容都理解的差不多,那你就可以说是入门 Java 了,但是这里要注意一个概念,这并不等于说你是一个合格的初级 Java 程序员了,因为要想达到初级 Java 程序员的水平,你要会能干活,能干活的标准是你要懂框架,不要急,我们后面会说。

有人问图中为什么没有并发或者 Java 虚拟机这些,这些属于中高级内容,刚开始学 Java 不用懂什么并发和 JVM!!!有一些人或者培训班都喜欢秀自己懂 xxx ,懂 xxx ,这不就是误导小白么。

那么话又说回来了,如何才能学习并了解到上面这些内容呢?接下来重点来了!!!

如果你能看到这里,我就认为你养成了每日编程的习惯,此时的你能够静下心来编程了。

那么我首先给你推荐一本初学 Java 非常合适的一本书

Head First Java

《Head First Java》是本完整的面向对象(object-oriented,OO)程序设计和Java的学习指导。此书是根据学习理论所设计的,让你可以从学习程序语言的基础开始一直到包括线程、网络与分布式程序等项目。最重要的,你会学会如何像个面向对象开发者一样去思考。

微信图片_20220416170612.png

书中涉及的 Swing 图形化接口和 GUI 这部分可以不用学习,或者作为简单了解,因为现在几乎很少有人 拿 Swing 开发桌面化程序。

这本书可以说是非常适合小白的一本了,零基础就可以看,Head First 系列的书籍一般都是语言诙谐幽默,读起来不累,而且书中有非常多锻炼思维的游戏/方法,对于有经验的人来说,看这本书感觉非常弱智,但是对于零基础或者 Java 新手来说,这是一本非常适合系统学习 Java 和查漏补缺的一本书。

Java 核心技术卷一

有人把 Java 核心技术卷一作为入门书籍推荐,其实我觉得并不友好,虽然这也是一门基础书籍,但是对不同的人来说,这本书的接收程度不同,我推荐看完上面的 Head First Java 再看这本。

微信图片_20220416170616.png

Java 编程思想

Java 编程思想就是一本神书了,不管你是初、中还是高级程序员,你每次看这本书的时候都会有新的收获

微信图片_20220416170619.png

这本书同样不适合刚开始入门 Java 的同学看,甚至前三章并不友好,因为 Java 编程思想只是讲面向对象过程的设计思想就用了很大篇幅,这本书包含很多示例代码,我强烈推荐你要学习里面的代码思想,到工作中,这些编码思想和代码规范会非常有用!!!

所以综上所述,入门 Java 你需要掌握的基础知识有

  • Java 基本介绍
  • Java 有哪些特点
  • 什么是 Java 开发环境
  • Java 开发环境配置(初学者建议 Eclipse)

这里就需要区分不同的电脑类型了,一种是 Mac ,一种是 Windows,很少有直接拿 Linux 进行开发的,所以我们这里不探讨 Linux 的方式

Mac 上的相关配置可以看这篇

Windows 上的相关配置可以看这篇

  • 编写入门 Java 程序

这里你需要使用集成开发工具,一种是 Eclipse 、一种是 IDE,初学者建议使用 Eclipse,因为 IDE 对新手并不友好。

Eclipse下载与安装

Java 入门程序编写

好了,如果你能按照上面的步骤一步步走下来,那么恭喜你,你能够成功编写一个 Java 入门程序了。

现在,你就可以进入到 Java 相关知识点的学习了。

  • 了解面向对象的设计思想

首先,你需要先认识到什么是面向对象的设计思想。

这里我推荐你看一下 《Java编程思想》 的第一章和二章

知乎的这个回答也能帮助你理解 什么是面向对象编程思想?

  • Java 基础语法(Java标识符、Java 修饰符、Java 变量、关键字、Java 注释)

关于 Java 变量,可以参考这篇文章

Java 中的变量有很多,很容易让初学者不知所措,这里我写了一篇 Java 变量解惑的相关文章

Java 中到底有哪几种变量

  • Java 控制流程
  • Java 访问控制权限
  • 面向对象
  • - 继承
  • 封装
  • 多态
  • 面向对象最主要有三大特征:继承、封装和多态,你可以参考这篇博客 面向对象的三大基本特征和五大基本原则
  • Java 抽象类和接口 ,也可以参考这篇文章 深入理解Java接口和抽象类
  • Java 异常 Exception 和 Error ,这里我也写了一篇文章 看完这篇Exception 和 Error,和面试官扯皮就没问题了
  • Java 集合
  • 泛型 ,深入理解泛型可以参考这篇文章 java 泛型详解-绝对是对泛型方法讲解最详细的,没有之一
  • 内部类,系统化的了解内部类,可以参考这篇文章 Java内部类详解 - Matrix海子 - 博客园
  • Java IO ,深入理解 Java IO ,可以参考这篇文章 为什么一个还没毕业的大学生能够把 IO 讲的这么好?
  • Java 枚举 Enum ,全面理解 Enum,就这一篇文章
  • 反射 ,这篇文章简直太好了 学会反射后,我被录取了!(干货)
  • Java 注解

上面所有的内容和思维导图,都可以在这篇文中获取

Java技术核心总结 PDF 下载

上面都是以文章方向为主的自学流程,下面是视频方向的自学流程。

一、Java基础 1、尚硅谷宋红康(强力推荐):

尚硅谷宋红康Java基础教程(java入门神器、配套资料齐全)_哔哩哔哩 (゜-゜)つロ 干杯~-bilibili

2、黑马Java基础+就业班+各种项目idea版本(推荐):

黑马Java基础+就业班+各种项目idea版本(正在更新)_哔哩哔哩 (゜-゜)つロ 干杯~-bilibili

3、动力节点Java零基础教程视频:

Java零基础教程视频(适合Java 0基础,Java初学入门)_哔哩哔哩 (゜-゜)つロ 干杯~-bilibili

4、北京尚学堂高琪(推荐):

高淇老师应各位网友要求又更新了JAVA300集_哔哩哔哩 (゜-゜)つロ 干杯~-bilibili

5、求知讲堂:2019求知讲堂零基础Java入门编程视频教程 高口碑 无废话 无尿点 :

2019求知讲堂零基础Java入门编程视频教程 高口碑 无废话 无尿点_哔哩哔哩 (゜-゜)つロ 干杯~-bilibili

6、尚硅谷Java8新特性+JUC+NIO:

尚硅谷Java8新特性+JUC+NIO_哔哩哔哩 (゜-゜)つロ 干杯~-bilibili

如果你能掌握上面的基础内容部分,我觉得你应该花至少 3 - 6 个月,如果你能坚持下来的话,这里我需要鼓励一下你,但是不要自满,因为这才只是最最最最基础的部分,但是现在你可以说是一只脚踏入 Java 大门了。

设计模式

微信图片_20220416170624.jpg

设计模式放在这里不是让你马上就要学习的(当然你也可以学习,没有人能阻碍你学习),因为设计模式涉及到你工作的方方面面。有些设计模式你可能这辈子都用不到,但是你需要了解其思想,以便写出思路严谨,条理清晰的代码。

设计模式我给你推荐几本书,你看哪个都行。

Head First 设计模式

微信图片_20220416170628.png

这本书虽然只有 14 章,但是却介绍到了所有的二十三种设计模式,每一种设计模式都有对应的应用案例,以风趣幽默的语言描述来一步一步为你揭开设计模式的面纱,告诉你设计模式的演进过程。

读这本书不仅仅是学习知识,而是在学习一种思考的方法,学习一种认知的技巧,学习一种成长的阶梯。总之,用你闲暇的时间来读这本书,并不亚于你专注的工作或学习。

图解设计模式

微信图片_20220416170633.png

设计模式更多是一种思想,而不是一种固定的代码编写方式,千万不要局限于这些条条框框。日本人的书写的就是非常通俗易懂,适合小白。194张图表 + Java示例代码 = 轻松理解 GoF 的23种设计模式。

本书以浅显易懂的语言逐一说明了 GoF 的 23 种设计模式。在讲解过程中,不仅搭配了丰富的图片,而且理论结合实例,用 Java 语言编写代码实现了设计模式的程序,让程序真正地运行起来,并提供了运用模式解决具体问题的练习题和答案。除此以外,本书在必要时还对 Java 语言的功能进行补充说明,以加深读者对 Java 的理解,在学习设计模式的同时也在复习 Java。

上面这两本书非常适合初学者学习设计模式

相关文章
|
12月前
|
XML 人工智能 Java
java实现PDF 电子签章
本文介绍了使用Java将Word文档转换为PDF并添加水印、签名和盖章的方法。通过Apache POI读取Word内容,结合OpenPDF生成PDF文件,并利用PdfPageEvent接口实现页面水印与签名功能。代码示例清晰展示了转换流程及关键实现细节。
795 0
|
存储 安全 算法
Java 集合面试题 PDF 下载及高频考点解析
本文围绕Java集合面试题展开,详细解析了集合框架的基本概念、常见集合类的特点与应用场景。内容涵盖`ArrayList`与`LinkedList`的区别、`HashSet`与`TreeSet`的对比、`HashMap`与`ConcurrentHashMap`的线程安全性分析等。通过技术方案与应用实例,帮助读者深入理解集合类的特性和使用场景,提升解决实际开发问题的能力。文末附带资源链接,供进一步学习参考。
325 4
|
Java Apache Maven
Java将word文档转换成pdf文件的方法?
【10月更文挑战第13天】Java将word文档转换成pdf文件的方法?
5781 1
|
存储 Java API
如何使用 Java 中的 API 更改 PDF 纸张大小
如何使用 Java 中的 API 更改 PDF 纸张大小
437 11
|
Java
Java PDF模板生成PDF
Java PDF模板生成PDF
454 1
|
Java
JAVA PDF 截取N页,生成新文件,转图片,多个PDF 合并
JAVA PDF 截取N页,生成新文件,转图片,多个PDF 合并
340 0
|
JavaScript Java
Java 将Markdown文件转换为Word和PDF文档
【7月更文挑战第5天】Java中使用`Spire.Doc for Java`库可方便地将Markdown转换为Word或PDF。基本步骤包括导入模块,创建`Document`对象,加载Markdown文件,然后保存为目标格式(`.docx`或`.pdf`)。若遇到`Invalid UTF-8 stream`错误,需确保Markdown文件是UTF-8无BOM编码。页面设置可通过`PageSetup`类调整。注意,实际应用会依据具体需求和环境有所调整。
2829 6
|
Java API Apache
如何在Java中实现PDF生成
如何在Java中实现PDF生成
|
Java API Apache
如何在Java中实现PDF生成
如何在Java中实现PDF生成
|
Java Maven
使用Java合并PDF文档
使用Java合并PDF文档
819 0