问题：﻿自学 Java 怎么入门？ 在大学自学 Java。看视频教程和代码能看懂 自己写就写不出来，怎么样能够入门？
话题：﻿生活方式、Java、Java编程、Java程序员、Java入门
回答：﻿自学会碰到的问题自学当然好啦，可以省不少的钱，可是自学会碰到很多问题呢。个人花了一年半时间(当前时间是20170815)，做了个Java自学的网站，试图解决一些自学中会碰到的问题。1.思路、框架、原理一下子涌进来太多，接受不过来无论是刚开始接触Java这门语言，还是像现在需要去学习一些新的技术的时候，都会选择去百度资料进行学习。然而百度来的资料很多都有个不好的做法，就是一开篇就以一种高屋建瓴的方式讲很多思路，原理和框架。事实上，对于刚开始接触，还没有多少动手实践的新手而言，是很难领会这些高屋建瓴的思路、原理和框架的，不仅不利于上手，而且还给初学者形成了一种暗示和心里压力：这个东西学习梯度是蛮陡峭的哦，无形中加大了学习的难度。我偏爱的学习方式是，不要一来给我讲太多的东西，直接给我代码，让我跑起来。只要跑出结果了，我自然而然就会得到一定的领悟，然后再自己去浏览每行代码，并琢磨其含义，那么就能逐渐理解和消化了。推己及人，所以我在做Java教程的时候，也是采用这种方式，在每个知识点的讲解，都是一来就给出了可以运行的代码，并且提供便捷的复制手段，这样大家一上手就是跑一个可以看到效果的代码：代码跑起来了，看到效果了，才会有兴趣往下学嘛2.自己写不知道错误在哪里经过上一步跑起来了，真的可以看到效果呢，可是代码是复制粘贴来的，那可不行，得自己敲出来才行。这个想法当然是好的，所以就开始一个个关键字，一行行的敲代码起来。可是因为初学者不熟练，也许是某一个字母出错，或者少写了一个分号，程序就跑不起来，而且这种细微的差别，很有可能找上大半天去了。为了提高这部分的学习效率，在教程每个代码右边都提供了代码比较功能如图所示，通过高亮提醒，很容易就可以定位到错误的位置是哪里，减少差错时间，提高学习效率。3.运行某个代码，需要第三方jar包，手里却没有，怎么办Java代码运行有个特点，常常需要用到第三方类，而这些类都放在.jar这种格式的文件里。如果这些jar包，让初学者自己去找，一个是不知道在哪里下载，再一个同样的jar包会有各种不同的版本，有些版本与当前代码是不兼容的，所以这里也是容易掉进坑里，花很多很多时间才会找到对的那个jar包。所以在需要用到jar包的地方，都直接在教程相关下载区域提供了当前代码正在使用的jar包，点击即可下载使用，方便快捷~不仅如此，还提供了指导，如何把这个jar包导入到项目中，以便正确地使用它4.这个知识点涉及的部分真多，有个思路图，原理图捋一下就好多了现在好了，照着教程自己做了一边，做出来了，效果也看到了，那么就有了感性的认识。不仅做出来了，心中还产生了更多问题，这个时候，就处于一个饥渴的状态了。那么此时此刻，开始讲原理图，思路图，就能够听得懂了，并且通过思路图也能把刚才所学整理，总结，更好的消化吸收。5.光是图文我还是看不懂，想看看视频怎么讲的有部分的知识点还是挺复杂的，比如算法，hashcode原理什么的。光是看图文和代码，还是有些稀里糊涂的。虽然有些稀里糊涂，但是经过自己敲过一遍，是带着针对性问题的稀里糊涂。那么这个时候，带着问题来看视频讲解，效果就会非常好了。这里提供的视频，都是解读性视频，是建立在已经动手做过了，带着疑问再来看的视频。那么比起看着敲代码风格的视频，学习效率就会提高很多啦截住目前为止(20170815)，视频已经有累计时常47个小时24分钟50秒，共计440个，大小26G~刚才到数据库里统计还吓了一跳，没想到啊。。。都这么多了，哈哈哈~6.虽然也写出来了，但是个别细节还是有疑问，该问谁呢在每个知识点下面，都有一个提问区域，里面有和你学习同样知识点的同学的疑问，或许你可以在别人提问的答案里找到自己需要的，也可以通过看别人的提问，启发自己做扩展性的思考。绝大部分提问，我都做了回答的，截至目前为止(20170815)，累计有1021个知识点，2788个提问，我回答了其中2544个问题。7.需要练习巩固理解帮助消化知识点掌握了，但是好像就是抄教程上的代码，最好给我个小挑战，基于这个知识点做点什么练习，能够自己把这个知识点运用起来，就能更好的理解和消化了。为此，挺用心地设计了194个Java练习，几乎每个Java课程的知识点下面都有练习题对这194个Java练习有一个详细的介绍，如果有兴趣，请移步：meepo：java入门菜鸟，目前处于自习阶段。想通过边练边学的方式学习java，想请问有什么java练习题的网站可以介绍？8.Java框架代码怎么都跑不成功学习Java是绕不开框架的，可是框架要成功地运行起来是有比较苛刻的条件的，比如特定版本的jar包，严格的配置，必须提供的实体类，控制类，服务类，框架之间不同版本的兼容性等等，任何一步除了差错都会出问题。而无法运行起来，是很难有信心和兴趣学下去的。所以为了便于同学们学习框架，在每个框架知识点的学习部分，都有当前知识点的可运行项目(什么都配置好了，需要的jar包都准备好了的)提供，确保可以跑起来。不仅如此，还引导以先运行，看到效果，再学习的风格，用由终至始的方式，降低框架学习的难度。9.记录下心得体会终于把要运行的代码跑起来了，该理解的思路图也掌握了，此时此刻能够自己总结一下就最好了。如果写在自己电脑上，零零散散的，也容易遗失，所以在页面上也提供了当前知识点的笔记功能把这时的想法，思路，研究都记录下来，等全部学完了，再回过头来巩固和理解，学习效果就会很好，知识点掌握得也牢固10.实践项目陆陆续续把各种JAVA，前端，服务端，框架的知识都掌握了，练习都做了，但是没有串起来，心里面也比较心虚，真正做项目的话，不知道该如何下手。这个时候，就需要各种项目来练手了。截至目前提供了4个实践项目练手一：JAVA桌面项目，虽然SWING桌面应用在工作里用的并不广泛，不过刚刚把JAVA基础学完，也没有其他好的视图展示方式(此时还没有开始学习HTML,JSP)。好在SWING也不复杂，还是可以通过这个项目把JAVA基础里的各个知识点好好串一串的。二：前端项目。现在前端有很多现成的框架，很容易就可以做出漂亮的界面。可是要对这些漂亮的界面做点修改，那就需要有较好的前端基础功底了。这个项目呢，就是用纯HTML,CSS和JS做一个模仿天猫官网的页面，讲得比较细，对每个页面的布局，以及每个样式的讲解都有细致的说明。比较适合又对前端比较感兴趣的同学，夯实前端的基础。对于这个项目有一个详细介绍，如果有兴趣，请移步：meepo：知乎上有哪些在前端开发领域的高质量回答？三、J2EE项目。现在大家开发JAVAWEB项目，一般都使用SSH,SSM,SPRINGBOOT等框架进行，可是这些框架下面都是用的J2EE的基础技术Servlet,JSP,Filter,Listener等等。一来就开始使用框架开发的同学，一旦碰到稍微底层点的问题，就有点不知所措，所以为了夯实大家的J2EE基础，做了这么一个基于J2EE来模仿天猫前后台的实践项目。对于这个项目有一个详细介绍，如果有兴趣，请移步：meepo：有什么值得推荐的JavaWeb练手项目？四、SSH项目。SSH也曾一度非常流行，是大家的框架首选，不过眼下基本上都是被SSM所替代了。不过SSH还是有其较大的人员需求。正是因为曾经一度流行过，所以很多企业，很多以前的，以及正在稳定运行中的项目，都是SSH做的。这些项目需要二次开发和维护，那么也是需要相当数量的开发人员的。（这一点可以通过各大招聘网站，搜索SSH关键字得以侧面的验证）所以呢，也准备了一个基于SSH的项目，这个项目使用SSH对上一个J2EE的项目进行了重写对于这个项目有一个详细介绍，如果有兴趣，请移步：meepo：如何理解ssh三大框架？五、SSM项目。还没有做好，哈哈~做教程可费劲了~估计10月底能做好吧~11.刷一刷面试题该学的知识点都差不多了，项目也撸过了，接下来就要去笔试面试了，那么刷一刷面试题，笔试题，零时抱抱佛脚，总归是有好处滴：学习的路线规划上面列罗出了自学过程中可能会碰到的问题，以及相应的解决办法，算是战术层面吧。接下来说说整体学习路线的规划。以下的规划，是假设当前是零基础的状态给出的：1.Java基础2.Java中级3.前端基础4.J2EE服务端5.Java框架学习时间预计要学习的内容还真不少，那么需要多长时间呢？根据较多同学的反馈，约莫预计个如下的时间：不计算桌面实和前端实践项目，需要3.5个月的时间。大概需要每天投入6-8个小时的学习时长，并且要有相当的自律性。既然想省略培训机构的万把块钱，那么自己管好自己总是必须的了喔关于心态可以达到什么程度呢？从学员的反馈来看，经过3.5个月的学习，倘若能够自己独立把几个实践项目做出来，并且能够较为清晰地描述其中的项目结构，结构层次，核心问题解决思路，那么拿到一个初级程序员的offer不会有太大问题。至于第一份工作的收入，这个大家也比较关心，我是这么看的：3.5个月的学习，大家都是普通人，谁也不是天才，没法这么短时间成为大牛，但是大概能拿到一个敲门砖。有了这个敲门砖，进入公司，在项目中历练，各种坑中翻滚搏杀，再从各种真大神写的经典书籍里吸取养分成长，逐渐练就一身硬功夫，经过好几年的磨砺，脚踏实地得拿几十万年薪，还是颇能指望的。目前呢，网上已经注册了1万多位学员了，不乏一些学员，第一份工作就拿了过万的薪水，还是很让人羡慕的。可是这部分学员也常常来找我倒苦水，工作里各种问题解决不了，才不配位，其实熬起来也蛮辛苦的。所以第一份工作若能找到一个中等收入，压力适中，但是有很多历练机会和成长空间的，就是非常好的了。未来教程内容规划目前这个网站呢，做了大概有一年半，我很幸运，在此期间做的都是自己蛮喜欢做的事情，很多教程做起来也很有挑战，很有意思，接下来会追加更多的内容，包括SSM项目，Redis,分布式相关技术,从0开始做个TOMCAT，mybatis等等。希望最后能做成一个自己也喜欢的网站教程地址：how2j的java教程局限于个人的经验和视野，有诸多不足之处，请各位多多指点，谢谢。收藏的同学，请记得点个赞~