开篇直奔主题,java 学习个人感觉分为两种途径,第一种是在学校,在培训机构等地方学习.
有人指导;第二种是自学,通过视频,书籍,朋友等完成学习. 本文适合 自学,且基础薄弱或者无基础的人.先介绍下我的个人简历:高中毕业,无编程语言基础,英语水平可能不到初中水平吧.自学 6 个多月,目前已工作.javaWeb 开发方向的.薪资保密.
1. 学 java 需要基础吗?学 java 需要英语什么水平?当你问这些问题前,首先要给自己一个定位.你学 java 是用来干什么的?如果你只是想找个这方面的工作,进入这个个行业,那么没有基础,英语水平一般(例如 publicstatic void main 不能写了 2 天还没记住怎么写,怎么读)就可以了.很多人说,学 java 或者说计算机之类的都需要英语基础,因为这些东西都是欧美之类国家过来的,想掌握新的技术之类都要读英语文档等等.等翻译到中文的时候已经是二手的了.这话确实没错.我要说的是,如果你只是想找个工作(开发岗位),那么 用那些二手的东西已经够了. 不过还是要提醒一点,不需要太多基础,绝不代表你以后也不需要,在你学 java 的过程中,对英语水平的提升也是非常必要,不需要去专门学英语,最起码能看懂报错信息.
2. 自学 java 有出路吗? 自学 java 要多久呢? 去培训机构好还是自学好?先说自学有没有出路,我可以告诉你,自学肯定有出路,但是你自学有没有出路,我不知道.再说自学要多久,我是专门辞职在家自学,有朋友周六日帮忙,用了半年时间开始找工作.学习时间是每天学习 10 个小时,每星期学习 3 天到 4 天(很不努力,能找到工作完全是朋友帮忙). 这个也要靠自己.最后,去培训机构好还是自学好. 我感觉肯定是去培训结构好,特别是那些一个人自学,没有朋友提供帮助的人.当然前提是你要选择一个好的,专业的培训机构.但是去培训机构要收钱,所以才有这么多人自学.
3. 学 java 出来工资待遇怎么样?自学的能拿多少钱?工资首先要看你工作的城市,北上广深圳高点,成都大连其次,别的地方少点,可以上智联招聘上看看. 至于自学的能拿多少钱?这个不是个问题,因为你去找工作应该不会说自己是自学的.
4.自学应该怎么学?有什么好的自学方法?有什么好的经验传授下?很多自学者或者说初学者,都会问这类的问题,想让前辈们传授下经验,避免多走弯路.我开始自学的时候也是在 CSDN 上 100 分发帖求指导,有很多人回帖,感觉看了都有用,但是还是感觉不知道如何下手,这里我把我的经验写出来,希望能帮上点忙。
写给 java 初学自学者(二)
学习中碰到问题,怎么解决?
一般遇到问题分为 3 种.
1) 理解上的问题.
例如: 不明白 public provite 等修饰符的区别,不明白 方法返回类型是什么,不明白 方法的参数是怎么回事,不明白重载,重写,覆盖的关系等等. 这种问题,解决办法就是 上网搜一下,大致明白是怎么回事,如果还是不明白,不要深究,不要 抓住这个不放,不要感觉这个不弄清楚就没办法继续学习, 别停下你的脚步,继续往前走,遇到这些问题就比葫芦画瓢,出错了就多做实验,多动手,一定要 多动手多总结,就 OK 了.到后来,你可能已经忘了这个问题, 当某天在群里,有人问这样的问题,你欣然解答,然后才发现自己早已掌握这些了.
切记:要勇往直前
2) 程序出错,有报错信息.
举个例子.曾经的我,一出错误,就到群里叫,报错信息也不提供,这样的话,除非有人正好很闲, 基本没人回答我的问题,当我把报错信息贴出来,别人发现 报错信息上的错误提示位置已经精确到哪一行,哪一个字符了.而我看都没看就直接求助,就 得出结论,我这样的不适合搞 java.也有人说我,不要有错误就去 问,要自己先分析一下,先尝试一下能不能解决,先网上查下资料. 而我,则吸取这个教训,出问 题,我先看到底是哪错了,不知道的就先去网上搜一下, 当我知道问题出在哪里,但是不知道怎么解决,我就会去群里问,或者继续在网上找答案.
切记:要分析报错信息.最好记下笔记.
3) 程序出错,没有报错信息.
这个问题比较麻烦,因为比较无厘头.当你遇到这样问题的时候,你会发现程序出错有报错信 息时候是多么美好. 这种问题解决办法还是要上网搜索. 但是这个问题麻烦的地方在于,可能你找原因找了 2 天,还没有找到,但是问题不见了. 也可能 你找了 2 天原因,还没有找到,问题还在,你重装系统了…… 如果你去搜索你这个问题,发现没有搜到你想要的内容,这时候你的方向应该发生变化,不要 去寻找原因了,解决问题就行了. 有人奇怪,不找到原因,怎么解决问题. 举例说明:
我建了 2 个项目, 部署在 tomcat 上,突然有一天,一个项目部署上去后,tomcat 加载不了,就是说 启动 tomcat 正常,但是没有加载项目.另一个项目则正常, 我去网上搜了半天也没有结果,tomcat 的配置,项目的路径,等等 扣了半天,没有解决,最后没 办法,把 tomcat 卸了重装,搞定了. 我到现在还不知道原因,但是原因已经不重要了.(如果你感觉从这种问题里面,能找到一条阳 光大道,你可以深入研究,但是初学者不建议,因为基础不够,基本 会被弄晕而不会发现什么商机或者新技术.) 如果你老是遇到 网上搜不到的无厘头问题, 那就是你的人品有问题了 . 嘿嘿.
切记:不要偏离目标。
写给 java 初学自学者(三)
这一部分主要来探讨一下学习路线.网上应该有很多的 java 学习路线图,大体都是一样的.这里我们就以传智播客java 学习路线图作为基础来分析一下(没有这个图的童鞋可以去网上下一个).这个路线图主要分为了 6 个部分:J2SE 部分,数据库&JDBC 编程,WEB 开发基础,JavaWEB 开发,轻量级 javaEE 开发,项目实战.每个部分下面又分了 3 个模块,每个模块下面又分了很多小的点. 整个图看下来,有点吓人,因为感觉要学的东西太多,这要学到什么时候才能找工作呢?确实很吓人,因为第 1 部分下面的第一个模块我自学了 2 个月还感觉没有掌握.那是何其痛苦的一段时间,每天都在想着放弃,想着去培训机构,想着自己不适合学这个,想着自己学了一天还没理解的东西可能别人就是几分钟的事,整天压力巨大,每天睡觉前都为一天的劳无所获而不安.在这期间我有过自暴自弃,每天醒来就开始打植物大战僵尸,甚至连连看都能玩一个上午,整天在继续还是放弃中徘徊
这里我把这个学习路线图给大家分析一下,避免你们也像我一样痛苦,或者减轻你们的痛苦。
#一: J2SE 部分
J2SE 部分下面分了三个模块,java 基础,java 界面编程,javaAPI1.java 基础.这个毫无疑问是重点,也是所有自学者开始纠结的地方.特别是像我这种没有编程语言基础的人.真的是印证了万事开头难.这期间你可能整天都是在黑乎乎的 dos 窗口中敲 javac java 等命令,你完全不知道现在学的和以后的做网站,做软件有什么联系.没关系,别困惑.所有人都是从这里开始的.你跟着做就行了,我是看视频自学的,所以这里也是看视频,跟着视频走就行了.这时候困惑你的一些问题可能有下面几部分1)对一些概念不理解,对一些用法搞不懂,一些例子照着书上或者视频上的写但是出错了.例如:不明白把属性设置成 private 的,然后写个 get 和 set 方法,这样有什么用.不明白封装是什么.这些可以参考 写给 java 初学自学者(二) 里面的办法解决.2)感觉自己进度好慢,一天下来就看玩了一个 2 小时的视频,就看了几页书之类.这个我不知道你们会不会有,当时我是天天感觉进度好慢,这就需要调整好心态了,告诉自己一直在进步.2.java 界面编程.这部分我没有看,因为当时确定是要走 javaweb 方向的.如果你也确定.你也可以不看……3.javaAPI这部分我当时了解了下 JAVA IO ,多线程,网络编程和反射注释都没看.如果是 javaweb 方向,网络编程好像也可以不看, 但是 IO,多线程,反射注释还是有必要看看的.这在线路图上写的是重点,但是我感觉有个了解就可以.以后用到再钻研钻研.##第一部分总结. 这部分学习,一定要多动手,把书上的,视频上的例子都敲一遍,不要感觉自己看会了就不做了,一定要做.切记:代码是敲出来的。
#二:数据库&JDBC 编程
数据库&JDBC 编程下面分了三个模块,sql 基础,JDBC 编程,JDBC 高级对于数据库的学习,很多人刚接触可能会困惑,因为数据库的东西太多了.不知道应该学多少才好.不知道应该研究多深.数据库是独立于 java 以外的,只把数据库学好就可以找工作了.这就告诉你,你不必把数据库学的多精通.那学到什么地步?当时我学的时候,我也问朋友,数据库要学到什么样才行呢?朋友的回答是:够用.这个词是个很纠结很抽象的词,什么叫够用?这个是说不清楚的.只能谈下我个人感觉.够用就是指你在查找资料等情况下,可以对数据库进行一些基本操作.这些操作包括:创建用户,赋予权限,创建表.表的增删改查.多表查询.你可以用 java 连接到数据库,对数据库的内容进行增删改查等.具体遇到问题再研究分析.这部分的 JDBC 编程其实就是个 java 连接数据库的过程.就那几行代码,先记下,再理解就行了.JDBC 高级中的连接池,存储过程,触发器有个了解,最起码要知道有这么回事.ORM 思想一定要理解(如果这里理解不了,也没关系,后面用到框架就理解了).##第二部分总结. 这部分学习.重点是通过 java 对数据库的增删改查,其中查询后将结果展示出来是个难点.多动手练习.切记:代码是敲出来的.#通过上面两部分的学习.你已经可以写一个学生管理系统了. 可能在学习中你绝望颓废过无数次,没关系,写个项目出来.一切问题迎刃而解.我当时学完这两部分以后,想做个项目练手,但是我无从下手,真的不知道应该怎么做,做什么项目.这里给大家说下我当时做的学生管理系统.数据是存在数据库的,所有增删改查通过 JDBC 连接操作.有个 main 方法,执行后打印出文字,就是让用户输入 1,2,3,4 等数字,会判断输入的数字然后执行相应的功能,例如输入 1 可以查看全部学生列表. 输入 2 可以新增学生.当动手做项目的时候,很多问题就会出现,例如以前你感觉掌握了,但是现在不会用, 或者碰到个问题不知道怎么实现,等等.这一系列的问题客服以后.当你运行着自己做的系统的时候,那种感觉真的很爽.终于感觉学的东西有用了.我当时做这个项目是在参考鸟哥做的基础上,用了一个多星期.最后还有很多功能不太完善,但是感觉很好.学习时候的那种负面情绪,那种不自信,全都消失了.切记:代码是敲出来的.做项目是提升自信心的最好办法。
#三:WEB 开发基础
WEB 开发基础分了三个模块,HTML 语言,JS,DOM 编程
这里开始接触到网页了.终于离开了那个黑黑的 dos 窗口.(当然可能你已经用 eclipse 等工具了)1.HTML 语言.学了前面的,学到这里的感觉就是好简单.哈哈.HTML 语言其实就是几个标签,当然研究生的话也是很博大精深的.但是对于现在的你来说.要藐视它.
对这一部分要有个了解.要知道都有些什么属性,或者说都应该有什么属性. 你可能记不下来,但是用的时候能去找到解决方法就好.可以自己做几个页面出来. 不必深究一些细节,例如可能有些特效你怎么弄也弄不出来.别钻这样的牛角尖.2.JavaScript这就像数据库一样,也是个很深很深的东西,他是一个和 java 没有什么联系的语言.js 在以后做网页的过程中会很重要,但是这里你只需要掌握一些基本的东西, 例如基本语法,表格提交时候的验证等等, 像怎么用 js 验证之类的.去百度的话会有很多现成的代码,你要有能力看懂这些代码.因为可能有时候这些代码需要你修改了才能用.3.DOM 编程说实话,我写到这里的时候先去百度了一下 DOM 编程……学了 html 和 js 以后,DOM 编程应该是水到渠成的.因为 DOM 编程是建立在两者基础上的(个人理解,仅供参考)##第三部分总结. 这部分学习.基本都不是靠记的,需要的是你在用到的时候能找到就好.
#四:Java WEB 开发
Java WEB 开发分了三个模块.Servlet 开发,JSP 开发,AJAX 开发.1.servlet 开发.servlet 开发我当时看视频学习,看完视频后还不找到 servlet 到底是怎么回事,可能是我理解能力有问题……servlet 开发下面的 xml,Servlet API,Filter,Listener 要了解,Tomcat 要会用,HTTP 协议我没看……学这个的时候,可能很多东西都迷迷糊糊的,没关系,了解下,继续往下走.2.JSP 开发jsp 开发下面的 jsp 语法要掌握,标签,自定义标签,EL,JSTL,MVC 设计模式要了解下.学这个的时候,可能很多东西都迷迷糊糊的,没关系,了解下,继续往下走.3.AJAX 开发AJAX 开发很火,但是我不会.我去面试的时候就看了一下怎么验证用户名是否存在那个例子.到面试的时候考官问我,以前做项目用 ajax 吗?用.那你们返回前台是用什么形式返回的呢?什么?就是你们返回前台是包装成 JSON 之类的吗?我们用的 Struts2 …… 巨汗.当时我真的连 JSON 都没听过.所以你一定要对 ajax 有所了解.最起码知道什么是 JSON……(题外话:我不知道这个线路图把 AJAX 放这里是否合适.AJAX 也可以放到下一部分的),如果你现在也在学习java,在入门学习java的过程当中有遇见任何问题,欢迎你加入我的java学习交流qun:615741636。
##第四部分总结.这部分学习.你会相当的郁闷,因为你可能
学完了以 后还不知道到底自己学的是什么……
没关系.做个项目,一切问题迎刃而解.我当时是跟着马士兵的视频做了个 BBS 论坛.虽然这个视频有点老了.但是看看还是可以学到很多东西,等你做了个论坛出来.跑在自己的 tomcat 上,叫上你的朋友访问你的电脑.哈. 那种成就感.相当的爽……(好像这里马士兵视频上有个用到了 lomboz eclipse,这个工具应该是过时了,直接用 myeclipse就可以)切记:这时候一定要做个项目,把前面学的用一下,有些可能以前只是了解下的知识,在你做项目中用到,你就要去费点时间研究一下.切记:代码是敲出来的.做项目是提升自信心的最好办法.
#五:轻量级 JavaEE 开发
这部分其实就是三大框架.SSH.建议的学习方法就是跟着视频把原理,用法等的有个基础了解.有些东西你可能不理解.例如Spring 的 IOC,你可能没有感觉到这个有什么好的地方,没关系.照着学就是了.##第五部分总结.这部分学习,没啥经验分享的.我当时应该是捏着鼻子把视频看完的,因为厌学情绪很高.当你把这部分学完以后.java 的学习基本上是差不多了,你可以找个项目练练手,试试 SSH 的整合.切记:一定要做个项目.哪怕最简单的把 SSH 整合在一起的.切记:代码是敲出来的.做项目是提升自信心的最好办法.
#六:项目实战
这部分就是项目实战,还包括 JPA,EJB3.0.SOA,WebService,工作流等等以前你可能听过可能没听过的感念.这些东西目前我也还没掌握.嘿嘿.你要注意.这一部分的重点是项目, 前面说的那么多名词其实就是让你开阔下眼界,别以后出去工作了,别人说这些名词你都不知道是什么东西,那就不好了.大家可能感觉到,我对于前面五部分的学习经验,里面基本都是用掌握,了解,看下之类的字眼形容,一定要注意,哪些知识点不是让你了解下就好的.而只是在你学习的那个阶段了解下就行 .到现在,你需要的不只是了解.你需要运用,用你前面了解的东西去做项目,做完以后,你对哪些知识点应该已经超过了了解的深度.前面的很多东西我因为赶时间都没看过 ,像 EL,JSTL 等,但是最后做项目的时候用到了,我又回过头学了一下.##第六部分总结.公司招人,都是需要工作经验的人,什么是工作经验?基本就是项目经验.所以一定要做项目.以前那些重点的东西,你当时只是了解了一下,在你做项目的时候,要再去深入的理解一下.这一章写完了.回顾当时学习时候的状况,基本都是好难--做项目--不过如此--继续新知识--东西好多好难--做项目--不过如此--继续新知识--……这样一个过程.一定切记多动手,没有信息的时候,写一段代码出来就好了。