在知乎上经常碰到这种问题:“我刚毕业,怎么入门java?”;“我是初中生、高中生可不可以自学java?”作为一个已经工作八年多的老鸟,我想说:
如果你是一个遇到困难就望而却步的人,大可不必浪费时间接着把这篇文章看下去,真的不用因为java就业前景好,上升空间大,工资高就去学他。如果你热爱技术,耐得住寂寞,肯钻研,那么请接着往下看,这个行业也许适合你!
首先,学习java难吗?要说难,其实也不难,随便在网上找些入门的视频,从头开始看,大部分人都可以看得懂。基本的数据类型、判断语句、循环语句、面向对象以及Html入门,大家都可以看得懂。但是你如果想走的更远,请做好准备
不断学习,不断汲取知识;前期放弃王者、LOL不要吃鸡,多花点时间将学过的代码多敲几次,熟能生巧。
这里再说下,初中生、高中生可不可以学习java,答案当然是可以的,但是!注意了,初中生、高中生学习这行第一个是需要付出的更多;再者成功率更低。一方面是心智方面还没达到一定层次,再者社会对你的学历认可程度低,所以各位初中、高中童鞋还是努力学习,先考上大学再说吧!
确实,也不是说这行什么门槛都没有。至少英语单词得多认识几个不是~
那么初学者该如何学习Java呢,前面有说到,在网上找一个java基础视频,大家都可以看懂。但是难就难在坚持和连贯。所谓坚持,就是你可能得花上2到3个月的时间去系统的学习Java基础、前端基础、主流框架(spring、SpringMVC、mybatis),再一个就是连贯~很多人就败在这个上面。如果你前面学的知识不牢固、没有充分的练习和消化,那么对你来说后面学的东西会非常吃力甚至不懂。慢慢的你会放弃学习。
上面说的基本上是你在通往Java学习的道路上必须去做到。相信我,我曾经在这条路上走过很多弯路。记得刚学习java那会,笔者抱着雄心壮志,急于求成,想着一鼓作气的把学习视频都看完,但是由于联系得不够,自己根本消化不了。最后不得不重头再学。
有了学习方法,接下来我们该遵循什么样的路线去学习呢!笔者也是精挑细选,将必须学习和掌握的知识进行一个梳理,掌握以下知识,你将成为一名合格的入门者。后续只需要学习了解一些热门的知识,就可以去面试找工作了。
1、基础入门必备
- Java简介
- 了解什么是Java
- 代码语法基本格式和输出表达式。
- 了解Java大致的编译、执行过程
- Java语言基础、判断、循环、数组 、类和对象
- 掌握Java的基本数据类型和引用数据类型有哪些;
- 掌握强制数据类型转换和自动类型提升规则;
- 常量如何声明及赋值;
- 判断、循环的语法及作用;
- 数组的声明及定义;
- 掌握类的概念以及什么是对象。
- OOP封装、继承、多态
- 面向对象的三大特征,本节内容非常重要也相对来说较为难以理解,一定要耐下心来好好理解。
- IO流操作,多线程及Socket
- 掌握IO读写流相关的类,了解字节流,字符流和字符流缓冲区;
- 掌握线程的概念,多线程的创建、启动方式,锁和同步的概念及运用;
- 掌握Socket通信的概念,如何声明客户端服务端,如何完成双端数据通信。
- 数据库基础(Mysql、Oracle)及JDBC
- 掌握数据库的基本概念,Mysql的安装、启动与停止
- Mysql数据库客户端的安装与使用
- JDBC的概念,在Java中使用Mysql驱动包连接Mysql
- 要求可以熟练的手写JDBC操作代码,面试经常问到
一阶段学习的都是概念、定义和基础,就像在建房子的时候打的地基,只有地基足够牢固,房子才会稳而且安全。以上所列除了多线程和socket,其余均需要重点学习,重点掌握和理解。另外java还有一个Swing编程,java的界面编程,此模块可以忽略,市面上有更好的解决方案,所以基本上没有公司需要用到此技术,我们也不必浪费时间在这个上面。
学习完一阶段,可以在网上找找一节简单的管理系统、学生成绩、银行存取款等等,自己尝试的先去模仿然后自己编写一个新的系统,当你解决完所有bug,调通系统后会有无比的成就感~~
但是!~~注意了,这还只是基础,还有很多路要走~
我们接着往下看第二阶段的学习内容!
2.前端入门基础
- HTML基本标签、表格、表单和框架;
- 掌握网页的基本构成;
- 掌握HTML的基本语法;
- 表格的作用以及合并行、合并列;
- 表单标签的使用,提交方式get/post的区别;
- 框架布局的使用
- CSS样式表;
- 掌握CSS的语法及作用,在html中的声明方式;
- 掌握CSS布局的函数使用;
- 掌握CSS外部样式的引入。
- JavaScript;
- 掌握JS的语法及作用,在HTML中的声明方式;
- 掌握JS的运行方式;
- 掌握JS中的变量声明、函数声明、参数传递等;
- 掌握HTML中的标签事件使用;
- 掌握JS中的DOM原型
以上内容可以自行百度W3School,进行学习相关的知识
- jQuery
- 了解如何使用jQuery
- 掌握选择器、文档处理、属性、事件等语法及使用;
- 能够灵活使用选择器查找到想要查找的元素并操作他们的属性;
- 动态声明事件;
- 动态创建元素。
- Servlet
- 掌握Java中的Web项目目录结构;
- 掌握Java Web项目的重要中间件Tomcat;
- 掌握Servlet中的Request和Response;
- 掌握Servlet的基本运行过程。
- 掌握Servlet的声明周期
- 动态网页技术
- JSP在Java Web中的角色;
- JSP的编码规范,以及JSPServlet;
- JSP显示乱码的解决办法等。
- JSP数据交互
- JSP中如何编写Java代码,如何使用Java中的类;
- JSP中的参数传递。
- 状态管理Session和Cookie
- 掌握Session的作用及作用域;
- 掌握Cookie的作用及作用域;
- 掌握Session及Cookie的区别,存储位置,声明周期等;
- 掌握Session及Cookie分别在JSP和Cookie中的使用
- JSTL和EL表达式
- 使用EL表达式输出page、request、session、application作用域中的值
- 使用JSTL来做逻辑判断或循环控制
- Ajax
- 掌握Ajax的基本概念;
- 掌握jQuery中的Ajax请求;
- 掌握JSON
- Filter、Listener;
- 掌握Filter和Listener
- 掌握Session过滤器和编码过滤器
学完以上知识,可以说你已经学完了要准备的基础知识了,还是和前面一样,自己琢磨一个系统,练练手,如果身边有这方面的熟手,建议这时候自己不耻下问一下,编程一直都是程序猿与bug不停的斗争过程,此时的你知识面还不够宽,知道的东西也不多,很容易碰到一些bug没办法自己去解决。
接下来我们可以开始学习主流框架的应用了
3.主流框架技术
- Mybatis的应用
- Mybatis的Mapping与实体映射;
- Mybatis中的SQL语句写法;
- Spring应用
- Spring容器的作用;
- Spring的AOP和IOC;
- SpringMVC的应用
- SpringMVC中的控制器注解、请求注解、参数注解、响应注解等;
- SpringMVC中的静态资源处理;
- SpringMVC的容器。
- Spring+SpringMVC+Mybatis整合
- SSM的整合使用;
- Spring容器和SpringMVC容器
- Maven
- Maven的作用
- Maven项目的创建
- Maven的生命周期
- Maven中央仓库及私服
- Log4J2日志
如果你是一个持之以恒的学习者,坚持学完以上知识,那么恭喜你,已经成功入门java。此时你自己使用SSM框架开发一个小的系统,再跟之前自己学习的JDBC+Servlet+JSP开发做对比,相信你会有更多的收获。我们再学习一些常用技术,就可以大展身手,开始找工作啦!
4.需要了解的常用技术
如果你准备找工作,并且要拿到一份不错的薪资,那么以下技术是必须去了解熟悉的:
- SpringBoot 的应用
- 了解SpringBoot的起源及优势
- 了解SpringBoot项目的格式以及创建方式
- yaml语法特性
- application配置文件及静态资源处理
- Thymeleaf模板引擎
- SpringBoot核心之WebMVCConfigurer
- Struts2应用(了解即可)
- 什么是Struts2
- Struts2的用法
- Struts1和Struts2的区别
- Hibernate应用(了解即可)
- Hibernate在项目中的作用及优势;
- Hibernate中的hbm与实体类之间的关系;
- 什么是HQL,什么是关系映射(一对一,多对一,多对多);
- Redis入门和使用
- Linux操作系统
- Linux中的常用命令;
- Linux下的jdk、tomcat安装;
- Linux下的项目部署方式。
- 消息中间件的使用
- 推荐activemq的基础和与Spring的整合
- 学习SVN的使用,了解GIT
- 学习一下分页的使用方法
- 前端框架推荐学习BootStrap、EasyUI
以上四阶段都可以在网上搜到对应的内容,只是会踩坑很多罢了,我也是对相关资料做了对应的整理,这里附上详细的架构师学习路线和学习资料
最后重点强调一下,身边如果有已经入门的学长,一定要用好资源,多问多请教,再就是学习的过程中一定要多动手,多敲代码,不要被当时学习敲了一次,感觉自己就懂了的错觉给误导,可能第二天你就忘了前天所学的内容。看博客、看视频无非是让你了解、知道这个知识点,但是如果你想消化他,把他变成自己的东西,那么请你一定要多动手、多思考!只有把代码敲烂、键盘敲垮(这里夸张了~)你才会有所收获!
更多学习内容请阅读我的知乎专栏:打造全网Java高级工程师资料库(总目录)看完学的更加快,知识更牢固。你值得拥有(持续更新)~