前言

只有光头才能变强。

文本已收录至我的GitHub精选文章,欢迎Starhttps://github.com/ZhongFuCheng3y/3y

春节在家刷知乎,看到了一个知乎的问题:《学习Java可以干什么呢?

我是一个Java的初学者,大概学了四天,对Java到底能做什么还是一头雾水,每天对着黑屏(DOS系统)除了编译还是编译,那么Java对于一个初学者来说Java可以做些什么呢?

问题的链接:

看到了这个问题,就想起了我在大学自学的时候有同样的问题,现在工作了,来写写自己的看法,希望对广大的初学者有所帮助。

注:本文非常适合零基础初学者观看

如果别人让我介绍我是做什么工作内容的,我可能会用以下的方式告诉他(不知道学Java可以干些什么,可能就不知道下面的流程是怎么样的):

“你可以掏出手机,打开微信”

“我们都是玩微信的人,要进入微信先得有个账户,所以要先注册“

“注册实际上就是把你的账号和密码「保存」起来”。

“如果你注册成功了,那小本本「数据库」就有你的账号和密码了。等你登录的时候,就去小本本「数据库」查一下你输入的账号和密码是否匹配

“看到这里,有没有觉得「程序员」真是容易当,不就把输入的数据记录下小本本,等用到的时候再查一下而已嘛。其实不然,就好比微信的注册页面,拿IOS系统来说,从IOS 6 到现在的IOS 12已经有6个版本了。Iphone手机屏幕的尺寸也一直在变,从3.5英寸到现在的6.5英寸。微信团队需要对不同的「版本」,不同的「屏幕大小」进行兼容,让iPhone4s还是iPhoneXS Max都能用上微信。(起码在不同的手机上,看到的注册功能都是完整的,而不是东一块西一块不整齐的)”

“还比如说,小本本「数据库」记下的密码不能是你输入的「原始密码」。举个例子:某一天,一个在微信团队的小伙子拿到了存放账号和密码的小本本「数据库」,把小本本「数据库」的内容给公开了。(或者说一个黑客把微信给攻破了,然后公开小本本「数据库」),那岂不是谁都可以上我的微信号了?”

“程序员们当然可以考虑到这点,他们会这样做,将你输入的密码进行「加密」存到小本本「数据库」中。无论是谁,拿到加密后的密码,都不能「反推」你原始输入的密码。”

“所以,每次比对的都是加密后的密码”

一个功能远远没有上面所讲的那么简单,可能一个小小的功能背后是一个大大的团队在支持...

收藏等于白嫖,点赞关注才是真情!

收藏等于白嫖,点赞关注才是真情!

收藏等于白嫖,点赞关注才是真情!

我学习Java能做什么?

题主目前你学了四天有这种情况是非常常见的。我当时学了四天学了什么?

  • 安装Java开发环境用了一天
  • 学习基础的语法:基本的面向对象概念、for循环、if、三目运算符,简单的API(能输出HelloWorld)

如果题主能继续坚持学习Java基础,发现可能将近一个月都是对着黑窗口在玩。

  • 无论这个黑窗口是系统自带的,还是题主已经在用IDE了

集成开发环境(IDE,Integrated Development Environment )是用于提供程序开发环境的应用程序,一般包括代码编辑器、编译器、调试器和图形用户界面工具

学习Java基础的确不能做出些有趣的东西,学着学着会有枯燥的感觉。面向对象-封装继承多态、集合、多线程、反射、网络编程、内部类等等这些Java基础都是在黑窗口上学习和实践的。

这些玩意有意思吗?是没什么意思,学完这些知识会让自己产生疑问 “这些基础能写成一个应用吗”(无论是现在用的知乎APP还是PC版的知乎)。

这是一个非常正常的疑问,我在初学的时候也经常问自己:”我学这些东西好像没什么卵用啊,为什么网上(知乎、贴吧等论坛)的都在说 “初学要打好基础等你学好Java基础,那工作就不愁了

但是我当时一点都不知道这些基础用在哪里,迷茫

我看视频还是看书?

题主能够在知乎上提问了,我也默认题主已经在知乎看到过不少类似的问题,可能还没找到自己想要的答案。在搜索的时候应该能看到类似的问题《自学Java看视频还是看书

这个问题在初学的时候我也经常纠结。纠结的原因很简单:

  • 会有一部分人说:看视频没用,视频讲得太简单了,都是骗你去培训班的。看视频也太慢了,学习最快还是看书好
  • 会有一部分人说:零基础看书看不进去,学不会的,看视频好,一个老师带着你学习

这个问题我在工作了以后还跟同事讨论过,我是支持零基础学习看视频,他是支持直接看书籍

我俩谁也说服不了谁。那到底是初学看视频比较好,还是看书籍比较好?

知识点好多,我记不住

随便找一本评分比较高的Java基础的书籍来看一下,都是非常的。以《Java疯狂讲义》为例,有889页。拿着他比砖头还要重。

今天跟着书籍/视频学习了「内部类」,等学到多线程的时候再看一下这个「内部类」,发现已经看不懂他的语法了。昨天跟着书籍/视频学习了「网络编程」,发现上周学完的集合API全忘掉了....

咋整?知识点这么多,有这么多的API,我不可能全部能记得住啊...学完很容易就忘记了。

哪些需要重点学习,工作中常用的知识点有哪些

在初学Java的时候然后去相关的IT论坛逛逛,发现全都看不懂。明明是在学编程,但IT论坛的问题一个都看不懂。看着一大堆的专业名词,就犹如明明是中国人但看不懂奰媕鳏魍谶觳豳这些字一样。

初学者在论坛上看到面向切面编程、高并发、AOC、IOC、Mybatis、Linux这些可能都不知道是干嘛的,明明是Java的标签,但出来专业名词的好像都看不懂。

Java要学的东西也太多了吧,基础已经这么多了,后面的怎么学,我应该学习哪些重点啊?

我学到怎么样的程度可以找到一份工作

我耗时几个月熬过头了,已经学了Java基础、JavaWeb、简单的数据库、SSM框架等等一些基本的使用了。现在想要找一份工作,但不知道企业招人的标准是什么。

现在我学得这些,我觉得还有点虚,感觉跟实际工作的内容有较大的差距,学了这么多还是没有一点儿的底气,怎么办?

会写一点点的SSM和增删改查,简单的会写,难的就不会了。很急,在线等,怎么办

我的理解

学习Java能干什么?

现在Java按简单来说有两种方向:后端和客户端

  • 对造APP感兴趣的可以学Android
  • 对服务端感兴趣的可以学Java后端
  • (后端延伸出去也可以学大数据...

既然你会在知乎上提问了,你有没有想过你输入完内容,点击发布问题按钮的时候程序员为你做了些什么?

  1. 点击发布问题的时候,至少你提的这个问题是需要能被你再次打开,看看有没有相关回答者的吧?那是不是知乎要拿小本本把你这个问题给记录下来,后续找到了这个问题然后给你下一次打开。
  2. 那至少要做的就得把你发布的问题记录下来(记下),等你再次点开的时候再找到你的问题(查找),如果你把问题给删除了,那就得把记下的问题给删掉(删除),如果你把问题给修改了,那就得把你记下的问题给修改了。总之,你先要把问题给发布(存到小本本里边),你才能删改查
  3. 上面这些工作谁来干?程序员写代码来做。可能用Java,可能用Python,可能用Go,可能用全世界最好的语言PHP...

扯了一大堆,那我为啥还天天对着黑窗口在学习?而不是直接学习《如何实现类似知乎的发布问题功能》

显然你读懂一篇英文课文之前,你总得认识单词。你连单词都不认识,怎么做阅读理解呢?学习Java能做很多东西,你日常用到的APP/浏览的网页背后很可能就是用Java写的代码。

总之,学习Java了可以能让你了解一个网站和APP的基本运行原理,点了一个按钮会发生什么,为什么会这样。

  1. 知道为什么今年淘宝双十一在添加购物车的时候,有时会出现失败
  2. 知道为什么我在查飞机票的时候,查不到信息
  3. 知道为什么.....

看书还是看视频

我是建议零基础看视频入门的,原因有以下:

  • 大部分零基础学Java的同学都没有比较好的理解能力,看视频可以帮助你快速入门(视频可以加速观看)

  • 避免踩坑。书上讲的知识点的确是非常全,但有两个问题:
    • ①初学者抓不到重点,可能对着细小的知识点猛学一顿,发现这个知识并没多大的卵用。
    • ②初学者不知道学习路线。看书不是完完整整从头看到尾的,很可能书上一段的知识点现在已经没用了,但是你还是费劲去学(比如AWT SWING 现在就用得很少了,但书还是有大篇幅去讲解,如果你顺着学可能就浪费很多时间在里边)

看视频能让你抓住重点,快速了解知识点。但总的来说是因人而异,有的人理解能力就是好,看书就很快就学会了。

知识点太多,学完就忘,记不住

要明确的是,我们写代码的不是背书,不是让你将所有的API给记下来。现在开发工具,提示功能已经是比较好的了。在工作的时候忘了,也可以查百度/Google。

我们并不需要把所有的东西给记下来,重要的是:我们知道有这项技术,这项技术能帮我们解决掉什么问题

所以,在学习一项技术之前,必须要知道为什么。为什么需要学习这项技术,不学的话行不行。学了这项技术,我能解决什么问题。

如果不理解为什么要学习某项技术,就去学用法和API。我认为如果隔一阵子不用,的确是会忘记的。

比如说,如何你连“为什么要用多线程”你都无法用通俗的话来解释清楚。

即便你当时学习的时候知道多线程可以用xxx方式来创建,多线程的xxx的api。那再过两个月,人家问你”Java多线程有什么用啊?”。

你想想你还能答什么,我认为你是记不住“多线程可以用xxx方式来创建、多线程的xxx的api”这些知识点了。

  • 如果你不知道学习某项技术是干嘛用的,那先不要学

  • 如果你不知道学习某项技术是干嘛用的,那先不要学

  • 如果你不知道学习某项技术是干嘛用的,那先不要学

重点的东西可以写笔记记录下来(这个也是因人而异,我身边的大佬很多也不写笔记。但是我是推崇写笔记的)。

哪些需要重点学习,工作常用的知识点

我简单整理了一下画成了思维导图:

总结一下我认为学习Java的路线:

  • Java基础-->流程控制-->面向对象(包括Java语法)-->Java集合-->Java IO流-->异常-->多线程-->网络编程-->反射
  • JavaWeb基础-->HTML/CSS/JavaScript/jQuery-->Tomcat-->XML/注解->Servlet-->HTTP-->Filter过滤器和监听器-->JSP-->AJAX/JSON-->数据库(MySQL)-->JDBC和DbUtils
  • 项目管理和框架-->Maven-->SpringBoot
  • Linux基本命令

最后我们的项目是这样的:

  • 以Maven来管理我们的项目
  • 前端通过BootStrap来搭建页面框架
  • SpringBoot来搭建Java后端环境,SpringMVC处理前端请求(SpringBoot整合了)
  • DAO层使用DbUtils组件来完成,MySQL作为数据库

怎么样才能找到工作

只要你能从零把一个项目搭建起来,能运行在服务器上。用上的技术还不烂,那我认为就可以找到Java的工作了。

其实学完上面的,认认真真花一个月从零自己写一个达到找工作的门槛是不难的。但面试之前是一定需要刷面试题的。

如果还是学生的同学一定一定要参加校招,一定一定要刷算法题,巩固计算机网络、操作系统、数据库的基础。

如果还是学生的同学一定一定要参加校招,一定一定要刷算法题,巩固计算机网络、操作系统、数据库的基础。

如果还是学生的同学一定一定要参加校招,一定一定要刷算法题,巩固计算机网络、操作系统、数据库的基础。

坚持坚持坚持学习就肯定能找到工作!

最后

由于篇幅问题,很多细节就没在文章中写了。但是我已经把我自学到找到工作以及工作常用到的技能都写成了博客。现在已经更新了300+多的原创文章。

从Java基础(集合、多线程、设计模式)到JavaWeb基础(Servlet、JSP、过滤器)再到JavaEE常用框架(SpringMVC、Spring、Mybatis、SpringBoot)再到找工作的经历(写简历,刷面试题)再到工作后常用的技能(Linux命令,SQL编写,经验分享)都记录了下来。文章质量都杠杠的,欢迎查阅

如果大家想要实时关注我更新的文章以及分享的干货的话,可以关注我的公众号「Java3y」。