A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© gaol 中级黑马   /  2016-9-21 22:39  /  1792 人查看  /  1 人回复  /   1 人收藏 转载请遵从CC协议 禁止商业使用本文

作者:David
链接:https://www.zhihu.com/question/25255189/answer/86898400
来源:知乎
著作权归作者所有,转载请联系作者获得授权。

这个教程将Java的入门基础知识贯穿在一个实例中,逐步深入,可以帮助你快速进入Java编程的世界。万事开头难,逐步跟着这个教程走一遍,对Java应该就会有一种入门的感觉了。然后再去学习更高级的主题,或者更深入地学习其中的某些知识点。

第1课 Java开发环境安装与配置
第2课 Eclipse的安装与使用
第3课 第一个Java程序
第4课 面向对象基础
第5课 基本数据类型
第6课 运算符
第7课 字符串操作
第8课 程序的控制流
第9课 静态变量与静态方法
第10课 Java集合
第11课 封装与继承
第12课 抽象类与接口
第13课 异常处理
第14课 综合实例修改

入门之后,可以考虑以下学习内容和路径:

1、学习的基本路径

首先建立好开发环境非常重要,工欲善其事,必先利其器。做任何开发,首先就是要把这个环境准备好,之后就可以去做各种尝试,尝试过程中就能逐渐建立信心。初学者往往在环境配置中被各种预想不到的问题弄得很沮丧。

建立起来环境了,改变世界就靠你的代码了。学习一门编程语言没有太多的诀窍,你可能可以去找一本比较好的经典的入门书籍,现在网络上也有非常多的资料,图文或者视频都可以,根据个人喜好选择。最重要的练习,熟能生巧,在不断的练习中去加深自己对程序语言的理解。

接下来你需要了解这三个术语,叫SDK、API跟Lib,分别表示软件开发套件,应用编程接口和库。这三者之间其实有一定的联系,或者是交叉。总体来说,它们都是给我们提供的一些封装了底层功能的基础设施。做Java开发的话,这些东西通常体现为我们所经常说的“框架”。事实上要成为一个资深的Java开发者,对各种API和框架的学习,可能是花时间最多的一个地方。

当然你也不可能把所有API或者SDK种的所有内容完全弄懂。在软件开发中也有二八原则,少数的API能够胜任开发中的大部分场景。所以你只需要掌握这些关键部分,当在新场景下遇到不能解决的新问题时,再去查看帮助文档。所以帮助文档的阅读也是技术学习的一个关键因素。了解了基础原理之后一般就能上手开发了,帮助文档可以帮助你在实践中学习。

2、三个神器
三个神器,对于软件开发者来说非常重要。
第一个Google,虽然因为各种原因的话有时候我们访问不了,但是这基本上是可以去寻找技术资料最好的方式。
第二个是Github,之前提到过库的概念,Github就是一个可以找到大量第三方库的地方,那是别人给我们封装好的可以复用的代码。比方说造一辆汽车的话,我们经常不要自己造轮子,而Github上可以找到很多优质的轮子,这些轮子还是免费(代码都是开源的),我们应该尽量利用它们来拼装自己的汽车。
第三个是StackOverflow网站,在这个问答网站上你遇到的几乎任何开发问题都能快速找到答案。


3、Java Web全栈开发的推荐学习内容


简单总结一下,大概包括下面这些内容。每一部分都可以细化成很多知识点,这只是一个粗略的罗列。把它当做技术地图就好了。
开发环境的建立与项目管理:Eclipse、Maven和Git
Java编程基础:基本语法、面向对象特性、Java8新特性、更高级库(比如Guava)的使用等
前端开发技术:HTML、CSS、Bootstrap和JavaScript基础
Spring基础:依赖注入IoC、面向切面编程AOP、SpringBoot
MVC框架:Spring MVC、Struts等,包括URL路由、模板、表单、Session、拦截器等知识
数据访问:关系型数据库、JDBC、Spring JDBC、事务、ORM框架(MyBatis,Hibernate、JPA)
成熟应用的关键功能实现:邮件发送、异步任务、缓存、日志等
应用的测试和部署

4、JSP/Servlet的相关内容

最后专门提一下JSP和Servlet,虽然现在各种成熟的MVC框架已经让Java Web开发基本很少使用JSP和Servlet的原生功能了,基本都做了一层封装。但是这部分基础知识建议初学者还是要认真学习。

Web基础,HTTP协议
C/S模型,浏览器访问网站过程
URL基础知识
HTTP消息——请求和响应
处理HTTP请求的应用程序
Servlet/JSP简介
Servlet
Servlet容器,Servlet处理机制,Servlet生命周期
部署Servlet
ServletContext, ServletConfig
Filter, Event Listener
JSP
表达式,scriptlet, declaration
在JSP中访问Java类
JSP内置对象
处理用户输入
HTTP方法——GET v.s. POST
读取表单数据
构建MVC应用
Servlets/JSP存在的问题
MVC设计模式
使用RequestDispatcher
在Servlets和JSP中传递数据,EL表达式
使用JSTL作为模板
JSP Tag Lib
Core Tag(if, loop)
Function Tag(string, fmt, utils)
Session
Session&&Cookie基本概念
通过Cookie记录用户状态
使用Session跟踪用户

这部分内容,可以看看这个JSP/Servlet课程:

第1课 Java Web开发需要学习什么?
第2课 JSP与Servlet:Servlet简介
第3课 JSP与Servlet:JSP简介
第4课 JSP与Servlet:第一个JSP页面
第5课 JSP与Servlet:JSP表单处理
第6课 JSP与Servlet:MVC设计模式
第7课 JSP与Servlet:使用JSTL
第8课 JSP与Servlet:JSP指令与动作
第9课 JSP与Servlet:JSP表单输入控件
第10课 JSP与Servlet:博客用户注册表单处理
第11课 JSP与Servlet:通过Cookie与Session管理用户状态
第12课 JSP与Servlet:通过Filter拦截请求保护页面安全
第13课 JSP与Servlet:页面重定向

5、更进一步

分布式、深入Java虚拟机、针对不同场景的Java技术框架,到这个阶段已经不仅仅是Java的学习了,而是大型应用场景的技术积累、架构设计的精进了。

如果希望学习Spring MVC,下面是一个精心制作的课程,非常值得一学:

第1课 创建Spring Boot项目
第2课 URL路由:@Controller和@RequestMapping
第3课 @PathVariable
第4课 @RequestParam
第5课 模板渲染
第6课 分页处理
第7课 表单提交
第8课 表单验证
第9课 Flash Attribute
第10课 拦截器Interceptor
第11课 处理PUT和DELETE请求
第12课 文件上传
第13课 异常处理
第14课 @ResponseBody与@RequestBody
编辑于 2016-09-06 28 条评论 感谢 分享 收藏 • 没有帮助 • 举报 • 作者保留权利
知乎用户 有几年的学习经历,同时保留了自己的思维…
1585 人赞同
2016-6-24
有是一个季节过去。回来做个总结。
目前在用的QQ群是: 学无止境2——541138752,学无止境——328994417;群内的同学大都是初学者,入群放胆与人交流,另外我还会不定期的举办一些交流活动。

另外我个人还有一些其他的回答,希望对大家有帮助。
程序员为了期权加入创业公司,值得吗? - 知乎用户的回答
自学编程需要注意什么? - 知乎用户的回答
各位程序员前辈可以谈谈你们的编程学习经历吗? - 知乎用户的回答

===================我是快乐的分割线======================

2016-2-12
好久没有更新了,因为自己一直忙工作上的事情,事情多而且繁杂。自己开了公司后,多出了很多以前不需要考虑的事情。原来的群满,我建了一个新群,541138752。希望大家能在群里多多交流,相互学习。我也会定时,不定时的公布一些学习的资料。
最后 祝大家新年愉快!

===================我是快乐的分割线======================
这会有空,给一些初学者一些我认为比较靠谱的建议,仅供参考。
1,不一定要把java学深入。有多少人搞程序是喜欢这个的,搞程序一半是因为钱多,一半是因为晋升公平。那么问题就来了,如果是为了钱,那为什么不直接选择一个挣钱多的方向呢?
2,初学者学java至少要脱产半年的时间才能算了解了,才适合被人带,因为至少半年的时间,才知道遇到问题如何解决,有的人需要更长的时间。现在有很多人已经有5年左右的经验了,在他们的压制下,java初学者很难有逆袭的机会了。
3,行业环境,现在数据存储,后台打包的方案的创业公司已经有苗头,也就是说,后台开发已经被集中解决,日后会越来越成熟,这就是意味着,java招聘需要有经验的人,也就是说,必须熬几年后才能有突破。
4,java离市场较远,所以呢?java开发人员很难有一个大的突破。
5,程序里面有变量所以解决了一系列类似的问题,所以注定了程序必须提供大批服务时才能有高收益,不知道大家明白这句的意思不。如果不理解,就思考下云服务器怎么才能赚钱。
6,如果是想挣钱,如果是要公平。那就放弃追求高薪的想发,java只是一门语言,现在辉煌,以后就会凋零;java工程师也只是一个岗位,今天这个岗位很重要,明天就不一定了。任何一个岗位的薪资不是由能力决定的,是市场决定。今天java稀缺,明天如果出来一大批,价位马上下来。我本来想建议一下还没入门,想做java的同学转去学html5,学设计,但是觉得这也不就是一门语言,和java类似。
啰嗦了这么久,我只是了想告诉大家,不要被java限死了,任何时候老板都不会在乎你用什么技术,老板需要的是低成本,高收益,只有这样他们才能活下去,这不怪他们。今天为什么java热,因为成本低,php热,因为成本低,站在老板的角度,站在用户的角度,他们会在乎你用java用php吗 这个思想我提过几遍了,但是还有好些人好些没看见。

上知乎的人,有一部分有自己的见解,有一部分是来解决困惑的。为什么现在的大学生有困惑,因为老师没有教如何解决困惑,由于惯性,很多学生也就没有培养这方面的能力,现在问,是学java还是学php,非常简单的解决方法就是问自己的学语言的目前,为了钱就去看招聘网站 那个给的钱多学那个,有的说,php难,java简单 。怎么有这么多问题,想要钱多,还不想出力,给钱多说明这个门槛高,不行就不上。有时候很多人讨论这些问题就和女的讨论去哪吃饭一样,能不能有点主见,干什么都要问,那还干毛啊。不要用战术上的勤奋遮盖战略上的懒惰,说的就是那些不思考的人。别人怎么知道答案,别人开始的时候就没想过,直接干了。其实这个问题也是,怎么入门,你说怎么入门,你是中国人,你学英语怎么入门的,学java的时候就怎么入门。
又有人说了, 因为不会所以来问,那ok,正常。有的人,不会就去学,有的人,不会就去问然后去学,而有的人,不会去问然后就不了了之了。人和人的差距是不是就在这里

2015-01-13
===================我是快乐的分割线======================
应一些知友的要求,我建了一个群,供大家交流交流,328994417。
2015-01-11
===================我是快乐的分割线======================
我说一下,文章的顺序哈。越是上面的内容,越是最近更新的。今天有点空,我想分享一些工具给大家。(我只是做web的开发,所以介绍的内容有限)
jdk,tomcat,mysql,这三个就不用多说了,必须的。继续,如果ide 我推荐intellij 不要使用eclipse,myeclipse这些了,intellij 是java开发最好的ide,没有之一。如果想用轻文本编辑器,可以考虑notepad,或者是sublime,刚刚开始学的时候,我就是用notepad写,用jdk编译运行。选好ide后,就花一点时间学一学他们,工欲善其事,必先利其器嘛。学一段时间,需要管理项目的时候,了解一些插件,譬如maven,svn,git等等 这些东西能给你们剩下很多时间专心在业务或者是钻研上。哦,对了 还有,搞程序 必须还会翻墙,这里我推荐 chrome+goagent+SwitchySharp,稳定,免费,速度也能接受。
2015-01-03
===================我是快乐的分割线======================
非常感谢大家的支持,真的非常感谢,我个人现在的压力比较大,今年大学毕业,今年也就辞职了,也面临了生活的压力,但是好在有一技傍身,不至于饿死,我已经开始规划自己以后的路了,有自己的打算,所以以后就不太可能更新这篇文章了,我的文笔很差,有一句说一句,望读者减量。
最后我想说一点自己的总结,希望对大家有用。
1,程序没有一个入门和不入门的概念,大家不要扣这些字眼;
2,无论是哪种语言开发,程序都是运行在计算机上面的,所以计算机的知识必须了解;
3,程序开发只是一门工作,现在很热,以后说不定就冷了,这只是一份职业,只是工资高,赚钱不赚名,想清楚自己的规划再做决定;
4,坚持与实践,程序是必须动手才能有产出的,只动脑是 不!可!能!的。
5,祝大家开心的工作,生活,这才是最重要的!
谢谢大家.
===================我是快乐的分割线======================
周一来了个大早,补一点:
程序的说道底,就是程序设计+算法; 如果觉得自己不适合搞算法,那程序设计总得学吧,不然怎么活下去。那么问题来了?学程序设计哪家强!:)。 不闹了 。程序设计,就是组织代码,让你的代码更容易复用,让你的代码精炼,即 多加一个字符嫌多,少加一个就跑不起的地步。
好了 ,现不说了 ,某总来了。
===================我是快乐的分割线======================
非常感激大家的支持。下面的东西的都是非常基础的 编程久了就会面临更大的困难 举个栗子 多。这个太重要了,随着项目的复杂加深,java文件多,数据库表多,配置文件多,写程序的时候就需要控制这些了。把下面的学会了 就赶紧做项目,做多了就看到自己的渺小了。哈哈 感触很深。大家一起加油,努力奋斗吧!
===================我是快乐的分割线======================
刚刚捡到一张图,貌似很有用的样子,so,look look

===================我是快乐的分割线======================
昨天晚上看到这个题目,当时要睡觉了就没回。趁上班偷闲时间,好好回答下。
本人从自学java开始,已经两年有余。现在到达的程度就是,敢接10W以内的项目,2个月内,再加一个美工就能把活完成得漂漂亮亮。
以上属于废话,接下来才是重点,完整的把学习路线给你说下。
1,HelloWord!首先,学习如何把这个单词打印在控制台。这点成功能给你点信心和乐趣。当然,如果你不会,怎么办。网上找教程。<马士兵>的教程就很不错,边看边学,这是必须的,切记。
他的教程会有一个完整路线,主要先把J2SE的看完。按照顺序看,一定要认真的看,并且自己把视频归类:理论部分,操作部分。这部分看完得2个月左右吧,按照每天10小时,每周6天的进度,刚刚开始会比较慢,不要怕,我那个时候就是在暑假的时候看的,没有女朋友,只能撸电脑了。哈哈!
2,俄罗斯方块!上面的看完马上干这个,网上有教程,按照他上面的做,当然,自己改下颜色,造型什么的。大概3周左右吧!

===================我是快乐的分割线======================
好,通过以上大概3个月的时间,恭喜楼主,您已经入门了,但仍然是屌丝,不过你马上就要被你们班的女神仰望了。接下来的时间,看你分类的理论视频,边看边思考,这是什么,那是什么,这有什么作用,基本就是4W1H,哈哈高中学的这个词,不知道是5W还是4W了,不管了。
这个时候你大概懂了jdk,类型,变量,函数,IO,泛型,swing,反射,接口,实现,等等一堆"专业"词汇,但是这是不够的,让你的女神给你跪舔,你还要学习一门利器,利器——J2EE,哈哈,好像很高级的样子是吧!放心吧,少年,你的高富帅哥哥们(譬如我辈等,已经给你制造了很多轮子,你只需要坐上来就能策马奔腾了)什么是J2EE,举个栗子,淘宝网就一个J2EE实现。虽然你的女神天天上淘宝,但是很快你就能上女神了。接下来告诉你怎么玩转J2EE。
===================我是快乐的分割线======================

1,简单说下,就是让你做一个网站出来,这个网站的内容是动态生成的,什么跟什么啊,我不解释,你自己上网查。
2,网上一样有教程,我这里给你说下,你要注意的一些事,也就是说,我只会给你interface,不会给你具体的implemention。如下
a,tomcat,你要知道这是什么,干什么用的,怎么用。
b,数据库(mysql),如上这是什么,干什么用的,怎么用。
c,jsp,..................................
d,servlet...........................


===================我是快乐的分割线======================
后记,虽然写得不是很好,好歹看客们给个赞,让我也涨涨信心吧!

===================我是快乐的分割线======================
非常感谢大家的支持,我现在也是在工作, 也在学习新的知识,现在的技术发展的很快,很多新东西必须学习才能提高开发效率,但是java必须得学,基础的东西一定要打牢,其他的东西学起来就很快了,再次感谢大家的支持,有你们,很愉快!

1 个回复

正序浏览
已收藏,谢谢分享
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马