本文非常适合零基础初学者观看 
 
 
 
    
  如果别人让我介绍我是做什么工作内容的,我可能会用以下的方式告诉他(不知道学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后端
 -  
  (后端延伸出去也可以学大数据...
 
 
  既然你会在知乎上提问了,你有没有想过你输入完内容,点击 
  发布问题 
  按钮的时候程序员为你做了些什么? 
 
 
-  
  点击发布问题的时候,至少你提的这个问题是 需要能被你再次打开 ,看看有没有相关回答者的吧?那是不是知乎要 拿小本本把你这个问题给记录下来 ,后续找到了这个问题然后给你下一次打开。
 -  
  那至少要做的就得把你发布的问题记录下来(记下),等你再次点开的时候再找到你的问题(查找),如果你把问题给删除了,那就得把记下的问题给删掉(删除),如果你把问题给修改了,那就得把你记下的问题给修改了。总之,你先要把问题给发布(存到小本本里边),你才能 删改查
 -  
  上面这些工作谁来干?程序员写代码来做。可能用Java,可能用Python,可能用Go,可能用全世界最好的语言PHP...
 
 
  扯了一大堆,那我为啥还天天对着黑窗口在学习?而不是直接学习《如何实现类似知乎的发布问题功能》 
 
 
 
  显然你读懂一篇英文课文之前,你总得认识单词。你连单词都不认识,怎么做阅读理解呢?学习Java能做很多东西,你日常用到的APP/浏览的网页背后很可能就是用Java写的代码。 
 
 
 
  总之,学习Java了可以能让你了解一个网站和APP的基本运行原理,点了一个按钮会发生什么,为什么会这样。 
 
 
 知道为什么今年淘宝双十一在添加购物车的时候,有时会出现失败 知道为什么我在查飞机票的时候,查不到信息 知道为什么..
 
    
 看书还是看视频 
 
 
  我是建议零基础看视频入门的,原因有以下: 
 
 
-  
  大部分零基础学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的工作了。 
 
 
 
  其实学完上面的,认认真真花一个月从零自己写一个达到找工作的门槛是不难的。但面试之前是一定需要 
  刷面试题 
  的。 
 
 
 
  如果还是学生的同学一定一定要参加校招,一定一定要刷算法题,巩固计算机网络、操作系统、数据库的基础。 
 
 
 
  如果还是学生的同学一定一定要参加校招,一定一定要刷算法题,巩固计算机网络、操作系统、数据库的基础。 
 
 
 
  如果还是学生的同学一定一定要参加校招,一定一定要刷算法题,巩固计算机网络、操作系统、数据库的基础。 
 
 
 
  原作者: 
  Java3y 
 
 
 
  来源:https://segmentfault.com/a/1190000021667206 
 
 
 
  坚持坚持坚持学习就肯定能找到工作! 
 
 
 
  喜欢的伙伴点赞关注一下哦 
 
 
来源:oschina
链接:https://my.oschina.net/u/4439493/blog/3165468