# 先搞清楚这些问题，简历上再写你熟悉Java！

By [jingz0.eth](https://paragraph.com/@jingz0) · 2022-05-29

---

原创声明

本文作者：黄小斜

转载请务必在文章开头注明出处和作者。

系列文章介绍
------

本文是《五分钟学Java》系列文章的一篇

本系列文章主要围绕Java程序员必须掌握的核心技能，结合我个人三年多的Java学习和工作经历，总结和沉淀下来的方法论，希望能让Java学习这件事变得更简单，作者目前在阿里做Java，忙里偷闲分享一些技术文章

系列文章将会把一些技术学习方法、过程、要领与我的学习经验相结合，更加浅显易懂，并且我也会把我学习时用的资料，书籍和文章拿出来分享给大家，节省你我的时间。所谓授人以鱼也要授人以渔，是本系列文章希望达到的目标。

本文思维导图
------

![](https://storage.googleapis.com/papyrus_images/0fb3316a76a32555777628b64d36d19a7b9190485da868c9d66322fad984f70f.jpg)

简介
--

在这个三百六十行，行行转互联网的后互联网时代，Java作为一门深受培训班、企业以及开发者喜爱的语言，仍然非常火爆，虽然比不上之前几年的风光，但是依旧有一大批的追随者和学习者涌入。

不妨先来看看Java语言时如何被定义的。

> 根据百度百科的介绍，Java是一门面向对象编程语言，不仅吸收了C++ 语言的各种优点，还摒弃了C++ 里难以理解的多继承、指针等概念，因此Java语言具有功能强大和简单易用两个特征。  
> Java语言作为静态面向对象编程语言的代表，极好地实现了面向对象理论，允许程序员以优雅的思维方式进行复杂的编程。  
> Java具有简单性、面向对象、分布式、健壮性、安全性、平台独立与可移植性、多线程、动态性等特点 。Java可以编写桌面应用程序、Web应用程序、分布式系统和嵌入式系统应用程序等。

简单来说，Java就是一门基于C++ 开发，但又超越了C++ 的高级编程语言，它通过JVM虚拟机屏蔽了C++ 的复杂语言特性，转而作为一门面向对象语言，可以更好地支持平台移植、Web开发等应用。

了解了Java基本概念之后，接下来我们就不得不谈一谈，我们为什么学Java呢。

众所周知，Java是市场上占有率排名前三的编程语言，Java作为企业级应用开发的首选，不仅在很多企业得到应用，也深受美团、阿里等互联网大厂的青睐，特别是阿里，更是打造了大量的Java中间件，成为了Java生态中最靓的仔。

对于求职找工作的同学来说，Java可能仍然是后端工程师的最佳选择，虽然golang和Python一直在追赶，但是Java作为老牌语言，在企业中的地位很重要，它的市场空间仍然是无法撼动的。

学习Java，就是为了更好地开发应用，不论是开发web应用，还是开发中间件，亦或是微服务，都是Java语言最擅长的，加上Java生态的丰富多彩，对于企业级应用的全方位支持，使用Java的开发大型应用的成本相对还是比较低的。

如何学习Java基础
----------

### 第一次接触

我第一次接触Java还是在大三的课堂上，当时有一门课程就是Java，教的都是Java基础，在Java之前我还稍微了解过html、css这类前端技术，所以自认为学习Java应该不会有太大难度。

结果证明我还是想多了，刚开始老师就在介绍Java的基本数据类型，比如int的长度，double的长度，作为一个非科班程序员，当时甚至连1个字节是多少都不知道。

接着我们又学习了Java的数组，数组这个概念本来看起来没什么，但是接下来又出现了二维数组，老师还结合着数组的内存分配来和我们讲解，当时就晕了，于是就这么半推半就的学完了第一堂课。

大学课堂你们都懂的，大家的注意力也没有特别集中，有些关键概念错过了也就错过了。

其实重点还在后面，Java的重要特性就是面向对象编程，于是常见的一些概念，比如类和对象，继承、多态、接口和抽象类都一一出现在我们的视野里，学习Java，这些概念没有搞清楚的话，是非常耽误事的，毕竟其他一切高级特性都是基于此实现的。

勉强听懂了面向对象的一些语言特性之后，后续的课程里，我们又继续开始学习Java的高级特性，比如Java异常、多线程、集合类等等。

我只记得到多线程那里我就完全听不懂在说啥了，后面讲了什么，也就记不得了。我想大多数人第一次接触Java也是一脸懵逼的状态，谁第一次面向对象不都会紧张嘛。

### 学完了Java课，我能出师了吧？

一回生，二回熟，自认为已经完全掌握了Java的我（其实就学了一点皮毛）在大四毕业的那个暑假找到了一家本地的小公司进行实习。

当时我就想，我都已经是学过Java的人了，到公司实习应该不成问题吧，于是我非常自信，就去上班了。

结果第一天我就傻了，领导给我安排了一个小任务，是一个新员工入职的练手项目，写一个表单，完成录入员工信息的功能，当时的Java工程师还要会写前端，这个表单的样式和js代码都要自己写。

更尴尬的是，我完全看不懂这个项目的Java代码，不是说好的面向对象编程语言么，我先找到main方法，然后看一下每一步的执行逻辑就可以了吧，应该不会太复杂吧。

结果，我打开工程，这玩意怎么这么大啊，结构还这么复杂，这个service包是干嘛的，这个dao包是干嘛的， 还有啊，这个user类里为什么有一大堆的get和set方法，这都不是最过分的，最过分的是，为什么还有一堆的xml配置文件，我一个都看不懂啊，什么web.xml，里面写的都是啥啊。

更可气的是，还有一个叫做servlet的包，里面有各种各样的servlet，这个servlet更是我听都没听过的一个东西了。

当时我的内心是崩溃的，我这大学的Java课白学了呀，怎么到公司完全用不上了，这跟说好的不一样啊，不应该是挺简单的一个东西吗，我学了一门Java课程就应该完全掌握了才对呀？

> 现在回想起来，当初自己就是个傻白甜，根本不知道Java web是个啥，更不知道还有什么web框架，Jsp和servlet了。那个时我们这个项目用的还是struct1，你可以想象是多陈旧的技术栈了。

研究生阶段：推翻重来
----------

经历了暑假实习的阵痛之后，我终于明白了，不是学完Java这门课就能干活了，而是要学完整个Java技术栈才算完事啊，至少咱们的先学会JavaWeb呀，还有相关的框架也得会啊。

于是时间来到了研究生阶段，我当时就想，幸亏我还有两年多时间可以学这个Java，要不然就我现在这个水平，出去连个工作都找不到。

为了不让自己在两年后依然如此尴尬，我开始重新学习Java，现在回想一下，我的自学编程之路，也就是从那个时候开始的，当时我买的前两本书就是《Java从入门到精通》和《JavaWeb从入门到精通》这么接地气的书，对Java小白来说简直没有抵抗力呀。

于是我不负众望，看完了这两本书，《Java从入门到精通》倒是中规中矩，毕竟很多概念我之前都接触过了，但是我在《JavaWeb从入门到精通》里看到了很多从来没见过的概念，什么Java bean，spring、hibernate、jsp、jdbc、session和cookie，Tomcat等等，总之，这本书算是帮我开眼看世界的第一本java入门书籍了，虽然这本书在网上被骂的很惨，但是它销量好不是没有原因的，把它当成百度百科看就可以了。

明白了基本概念之后，接下来该学什么呢，我陷入了思考当中。恰好某一天，有室友推荐我看某客学院的视频，于是我当场就找到了学习方向，我在上面看到了一个Java学习路线图，如获至宝，开始沉迷于看视频中无法自拔。

某天我终于看完了视频，于是又自信地想，这下没问题了吧，我应该已经可以做项目了吧？刚好我们有一个研究生项目实践，可以让我们参与到项目开发中，于是我当时就选了JavaWeb方向的项目，准备在里面大展身手。

实践阶段
----

然而，理想和现实还是有一定差距的，当时我们要做一个类似云笔记的应用，我负责一部分的后端开发，当时我们从网上下了一个demo，准备基于它进行开发，于是我激动地用一个叫做eclipse（实际上我也没用过几次）的ide打开了这个项目。

诶，这个画风好像和之前的struct1也不太一样啊，后来才知道这个就是spring框架，让我好好瞅瞅这个项目到底长啥样，这个controller包是什么，service包和dao包好像似曾相识，但是这个pom.xml又是干嘛的，为什么看起来里面好像有很多jar包，没错，我还是连工程都看不懂，再一次陷入了自我怀疑中。

没办法，只好硬着头皮继续自学呗，但是这段时间的自学并没有太大成效，眼看者deadline逐渐临近，我们的小组长看不下去了，他发现我们两个后端确实都不咋会，前端搞了半天也只切了个图，于是开始说起了自己的想法，我当时第一次听说过前后端交互，以及用json作为数据传输的格式这种说法，后来才知道这都是开发的基本知识，

结果这个项目我们寻求开源支持，还是顺利完成了，但是我确实什么忙都没有帮上，于是我又开始怀疑人生了，Java这个东西，到底该怎么学呢，我书也看了，视频也看了，该学的感觉也都学了，怎么还是啥都不会呢？

如果重新开始，我会这样学Java
----------------

不知道看到上面的内容，各位Java小白会不会有一些共鸣，明明一开始觉得Java挺简单的，学着学着发现并不简单。

学完Java基础貌似就会做项目了？但是一接触项目代码，又发现自己就跟没学过一样。

于是又接触了一些JavaWeb的书籍和知识，想要现学现卖，结果一看真正项目里用到的又是另一套技术，自己压根见都没见过。

> 有些事，你必须要经历过，才能明白，有些坑，你不用自己去踩，因为我已经踩过了

如果让我重新学习Java，我可能会这样入手吧。

1、想通过Java学习视频入手，把基础搞懂。

2、接着看一些JavaWeb相关的视频，把常见的JavaWeb技术栈搞懂，最好要看新一点的视频，防止过时了不好使。

3、看看Java基础和JavaWeb的经典书籍，加深对一些概念和原理性东西的理解，防止在项目实践中搞不清楚。

4、找个项目课，有视频有源码的那种，跟着视频学习，还能跟着敲敲代码，实现一些功能，更能够加深印象和理解。

当然，这篇文章只谈到了入门Java，其实Java技术栈远不止这些东西，正如我的学习历程这样，你学的越多，就会发现你不懂的越多，后面我还会继续带来我在不同阶段学习Java的一些分享。

推荐资源
----

### 书籍

这两本我都没怎么看过，但是推荐就是政治正确，即使看不懂，买来供着也是极好的 《Java核心技术卷一》 《Java编程思想》

### 视频

某客学院入门课

慕X网的Java基础课

某客网的Java初级和高级项目课

### 博客

Java技术仓库《Java程序员复习指南》

[https://github.com/h2pl/Java-Tutorial](https://link.zhihu.com/?target=https%3A//github.com/h2pl/Java-Tutorial)

整合全网优质Java学习内容，帮助你从基础到进阶系统化复习Java。

我的个人博客：[https://how2playlife.com/](https://link.zhihu.com/?target=https%3A//how2playlife.com/)

社区： CDSN我就不推荐了，反正百度你们搜一下也都是CSDN的结果

这里重点推荐两个社区，实打实的有很多干货，对文章要求比较高，我的很多文章质量都达不到他们的要求。

1、掘金 [https://juejin.im/user/5b1d0d34e51d4506d936f561](https://link.zhihu.com/?target=https%3A//juejin.im/user/5b1d0d34e51d4506d936f561)

2、开发者头条 [https://toutiao.io/subjects/329410](https://link.zhihu.com/?target=https%3A//toutiao.io/subjects/329410)

### 总结

关于如何入门Java，我们今天就讲到这里了，如果还有什么疑问也可以到我公众号里找我探讨，后续会有更多的文章推出，包括如何系统性地学习JavaWeb，如何系统性地学习Java核心技术和底层原理，以及如何系统性地学习后端技术。敬请期待。

对了，你想问我文章里提到的书籍和视频去哪找？我已经给你准备好了

---

*Originally published on [jingz0.eth](https://paragraph.com/@jingz0/java)*
