前言

只有光头才能变强。

文本已收录至我的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」。

  • 初学者学Java常遇到的问题,我都给你回答了!的更多相关文章

    1. 没有基础的初学者学java怎样快速入门?超全的学习路线图

      现在地球人都知道互联网行业工资高,上万都是小case,不值一提.可是对于大部分人来说,工资七八千都算很难了.那我也想学java,当程序员,赚大钱.可是作为一个初学者,怎样才可以快速入门呢?早点入门就可 ...

    2. 初学者学Java(十五)

      再谈数组 在这一篇中我们来讲一下关于数组的排序和查找的方法. 排序 说到数组的排序,就不得不说冒泡这种经典的方法. 1.冒泡排序 冒泡排序的基本思想是比较两个相邻元素的值,如果满足条件就交换元素的值( ...

    3. 初学者学Java设计模式(一)------单例设计模式

      单例设计模式 单例设计模式是指一个类只会生成一个对象,优点是他可以确保所有对象都访问唯一实例. 具体实现代码如下: public class A { public static void main(S ...

    4. 解决初学者学不懂android,不理解android的设计

      最近在忙着搞一个小项目,所以没有来得及写一些原创性的东西,好容易今天中秋节,就趁现在写一些吧,今天仍然看了些老马的视频,尽管这些东西以前都用过,但是感觉仍然学到了不少东西,说给大家听希望大家也要不要不 ...

    5. 学Java的前景与就业,资深程序员教你怎么开始学Java!

      IT行业一直是就业的热门岗位,程序员这个职业稳定性和收入比都有着不错的前景,那么学Java的前景和就业是什么样的呢?随着入行Java的准程序员越来越多,各种学习Java的流派也层出不穷!其实在编程的世 ...

    6. 零基础怎么学java

      首先告诉你的是,作为一个初学者想转行学习Java并不是很容易,Java本身是具有一定难度的,虽然说兴趣这东西可以让我们学习不累,但是有多少人学习是因为兴趣,或者有多少人知道自己的兴趣在哪?所以我很明确 ...

    7. .net基础学java系列(二)IDE

      上一篇文章.net基础学java系列(一)视野 废话: "视野"这篇文章,管理员说它比较空洞!也许初学者看不懂表格中的大部分内容!多年的neter估计也有很多不知道的! 有.net ...

    8. Java学习路线图(如何快速学Java)

      不知不觉从初学Java到现在已经8年了,今天在这里给刚入门和入门不久的小伙伴们一些建议.可能总结的不是很详细,但给出了一个大概的学习路线.希望对大家有帮助哈~ 如何快速学Java 这里我以Java E ...

    9. 学java得这样学,学习确实也得这样

      引言 软件开发之路是充满荆棘与挑战之路,也是充满希望之路.Java学习也是如此,没有捷径可走.梦想像<天龙八部>中虚竹一样被无崖子醍醐灌顶而轻松获得一甲子功力,是很不现实的.每天仰天大叫& ...

    随机推荐

    1. <QluOJ2018NewCode>计算几何(寄蒜几盒)

      题目描述 现在有一个圆圈,圆圈上有若干个点,请判断能否在若干个点中选择三个点两两相连组成一个等边三角形? 这若干个点在圆圈上按顺时针顺序分布. 如果可以的话输出"Yes"(不含引号 ...

    2. 【Docker】Ubuntu16.04将Docker升级至最新版

      1.使用curl升级到最新版 curl -fsSL https://get.docker.com/ | sh 2.重启Docker sudo systemctl restart docker 3.设置 ...

    3. mybatis 的 dao 接口跟 xml 文件里面的 sql 是如何建立关系的?一步步解析

      序言 在开始正文之前,首先解释Dao接口和XML文件里的SQL是如何一一对应的? 一句话讲完就是:mybatis 会先解析这些xml 文件,通过 xml 文件里面的命名空间 (namespace)跟d ...

    4. DEVOPS技术实践_06:sonar与Jenksin集成

      代码质量管理平台 一.checkout和打包功能 1.1 gitlab在新建一个文件 后续在写入内容 1.2 Jenkins新建一个任务 两个参数 1.3 流水线配置 copy仓库地址: http:/ ...

    5. $[NOIp2017]$ 逛公园 $dp$/记搜

      \(Des\) 给定一个有向图,起点为\(1\),终点为\(n\),求和最短路相差不超过\(k\)的路径数量.有\(0\)边.如果有无数条,则输出\(-1\). \(n\leq 10^5,k\leq ...

    6. loongson编译所遇问题

      环境:虚拟机VMware +Ubuntu18.04+gcc4.9.3 使用gcc4.9.3编译时出错,提示需要运行命令:make -C /work/loongson0103/vUDK2018-loon ...

    7. Java容器知识总结

      剖析面试最常见问题之Java集合框架 说说List,Set,Map三者的区别? List(对付顺序的好帮手): List接口存储一组不唯一(可以有多个元素引用相同的对象),有序的对象 Set(注重独一 ...

    8. 小小知识点(三十九) 正交频分复用OFDM的基本原理及实现

      引言 符号间干扰(ISI)是无线传输系统设计中需要考虑的因素,采用什么样的处理方法取决于数据传输速率或等效传输带宽来决定 (1)若数据速率低且与信道最大延迟相比符号持续时间较长,那么就可能无需任何均衡 ...

    9. Redis系列(一):Redis简介及环境安装

      提到Redis,大家肯定都听过,并且应该都在项目中或多或少的使用过,也许你觉得Redis用起来挺简单的呀,但如果有人问你下面的几个问题(比如同事或者面试官),你能回答的上来吗? 什么是Redis? R ...

    10. 最大的 String 字符长度是多少?

      String 类可以说是在 Java 中使用最频繁的类了,就算是刚刚接触 Java 的初学者也不会陌生,因为对于 Java 程序来说,main 方法就是使用一个 String 类型数组来作为参数的(S ...