写给java初学者

写给java初学自学者(一)

开篇直奔主题,java学习个人感觉分为两种途径,第一种是在学校,在培训机构等地方学习,有人指导;第二种是自学,通过视频,书籍,朋友等完成学习. 本文适合 自学,且基础薄弱或者无基础的人.

下面先就几个常见问题做个问答式讲解:

1. 学java需要基础吗?学java需要英语什么水平?

当你问这些问题前,首先要给自己一个定位.你学java是用来干什么的?

如果你只是想找个这方面的工作,进入这个个行业,那么没有基础,英语水平一般(例如public static void main 不能写了2天还没记住怎么写,怎么读)就可以了.

很多人说,学java或者说计算机之类的都需要英语基础,因为这些东西都是欧美之类国家过来的,想掌握新的技术之类都要读英语文档等等.等翻译到中文的时候已经是二手的了.这话确实没错.

我要说的是,如果你只是想找个工作(开发岗位),那么 用那些二手的东西已经够了.

不过还是要提醒一点,不需要太多基础,绝不代表你以后也不需要,在你学java的过程中,对英语水平的提升也是非常必要,不需要去专门学英语,最起码能看懂报错信息.

2. 自学java有出路吗? 自学java要多久呢? 去培训机构好还是自学好?

先说自学有没有出路,我可以告诉你,自学肯定有出路,但是你自学有没有出路,我不知道.

再说自学要多久,我是专门辞职在家自学,有朋友周六日帮忙,用了半年时间开始找工作.学习时间是每天学习10个小时,每星期学习3天到4天(很不努力,能找到工作完全是朋友帮忙).这个也要靠自己.

最后,去培训机构好还是自学好. 我感觉肯定是去培训结构好,特别是那些一个人自学,没有朋友提供帮助的人.当然前提是你要选择一个好的,专业的培训机构.但是去培训机构要收钱,所以才有这么多人自学.

3. 学java出来工资待遇怎么样?自学的能拿多少钱?

工资首先要看你工作的城市,北上广深圳高点,成都大连其次,别的地方少点,可以上智联招聘上看看. 至于自学的能拿多少钱?这个不是个问题,因为你去找工作应该不会说自己是自学的.

4.自学应该怎么学?有什么好的自学方法?有什么好的经验传授下?

很多自学者或者说初学者,都会问这类的问题,想让前辈们传授下经验,避免多走弯路.我开始自学的时候也是在CSDN上100分发帖求指导,有很多人回帖,感觉看了都有用,但是

还是感觉不知道如何下手,这里我把我的经验写出来,希望能帮上点忙.

------------------------------------------------------------------------------------------------------------------------------------------

写给java初学自学者(二)

下面来分享下个人感觉最重要的部分,学习方法:

(还是采用问答形式)

1. 刚入门,看书好,还是看视频好? 有什么好书,好视频,或者说适合的书,适合的视频推荐下.?

这应该也是初学者比较常问的一个问题了,先来对比下视频和书的优缺点.

视频:

优点,比较面向工作,比较着重实际中用到的,比看书更有身临其境的感觉.讲的比较详细,带你实际操作.

缺点,去找专业的视频,一般都是比较早的,有些东西可能已经过时了.还有查询起来比较麻烦.

书籍:

优点,比较全面,查询方便,比较及时.

缺点,比较全面,暂时没用的知识比较多,习题水平不高.

初学者,我感觉还是看视频比较好,说实话入门书我就看过2本,然后就转看视频了.书讲解的比较全面,但是就是因为比较全面,所以才感觉

不够突出重点. 可能会出现这种情况,为了一个课后习题,绞尽脑汁还是做不出来,可能是这个题出的不合适,也可能这个题其实一点实际意义

也没有,但是他浪费了时间,最主要的是,他比较打击初学者的信心.

视频比较不好的一点就是比较老,你去看培训机构的视频,他公开的都是几年前的(毕竟要盈利,不能公开最新的),可能有些已经过时了,(例如马士兵视频的

使用lomboz eclipse),还有就是查询起来不方便,所以要做好笔记.

这里推荐2个视频下载地址:

尚学堂 http://www.verycd.com/topics/93279/;

传智播客 http://www.itcast.cn/video/;

2. 学习中碰到问题,怎么解决?

一般遇到问题分为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个月还感觉没有掌握.那是何其痛苦的一段时间,每天都在想着放弃,想着去培训机构,想着自己不适合学这个,

想着自己学了一天还没理解的东西可能别人就是几分钟的事,整天压力巨大,每天睡觉前都为一天的劳无所获而不安.在这期间我有过自暴自弃,每天醒来就开始打植物大战僵尸,

甚至连连看都能玩一个上午,整天在继续还是放弃中徘徊...(感谢下鸟哥,2个人相互鼓励都挺了过来,嘿嘿)

这里我把这个学习路线图给大家分析一下,避免你们也像我一样痛苦,或者减轻你们的痛苦.

#一: J2SE部分

J2SE部分下面分了三个模块,java基础,java界面编程,javaAPI

1.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语言其实就是几个标签,当然研究深的话也是很博大精深的.但是对于现在的你来说.要藐视它.

我学这个是直接上W3C的网站上学的.http://www.w3school.com.cn/;

对这一部分要有个了解.要知道都有些什么属性,或者说都应该有什么属性. 你可能记不下来,但是用的时候能去找到解决方法就好.

可以自己做几个页面出来. 不必深究一些细节,例如可能有些特效你怎么弄也弄不出来.别钻这样的牛角尖.

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也可以放到下一部分的)

##第四部分总结.这部分学习.你会相当的郁闷,因为你可能学完了以后还不知道到底自己学的是什么....

没关系.做个项目,一切问题迎刃而解.

我当时是跟着马士兵的视频做了个BBS论坛.虽然这个视频有点老了.但是看看还是可以学到很多东西,等你做了个论坛出来.

跑在自己的tomcat上,叫上你的朋友访问你的电脑.哈. 那种成就感.相当的爽....

(好像这里马士兵视频上有个用到了lomboz eclipse,这个工具应该是过时了,直接用myeclipse就可以)

切记:这时候一定要做个项目,把前面学的用一下,有些可能以前只是了解下的知识,在你做项目中用到,你就要去费点时间研究一下.

切记:代码是敲出来的.做项目是提升自信心的最好办法.

#五:轻量级JavaEE开发

这部分其实就是三大框架.SSH.

建议的学习方法就是跟着视频把原理,用法等的有个基础了解.有些东西你可能不理解.例如Spring的IOC,你可能没有感觉到这个有什么

好的地方,没关系.照着学就是了.

##第五部分总结.这部分学习,没啥经验分享的.我当时应该是捏着鼻子把视频看完的,因为厌学情绪很高.当你把这部分学完以后.java的学习基本上

是差不多了,你可以找个项目练练手,试试SSH的整合.

切记:一定要做个项目.那怕最简单的把SSH整合在一起的.

切记:代码是敲出来的.做项目是提升自信心的最好办法.

#六:项目实战

这部分就是项目实战,还包括JPA,EJB3.0.SOA,WebService,工作流等等以前你可能听过可能没听过的感念.这些东西目前我也还没掌握.嘿嘿.

你要注意.这一部分的重点是项目, 前面说的那么多名词其实就是让你开阔下眼界,别以后出去工作了,别人说这些名词你都不知道是什么东西,那就

不好了.

大家可能感觉到,我对于前面五部分的学习经验,里面基本都是用掌握,了解,看下之类的字眼形容,一定要注意,那些知识点不是让你了解下就好的.

而只是在你学习的那个阶段了解下就行.到现在,你需要的不只是了解.你需要运用,用你前面了解的东西去做项目,做完以后,你对那些知识点应该已经

超过了了解的深度.前面的很多东西我因为赶时间都没看过,像EL,JSTL等,但是最后做项目的时候用到了,我又回过头学了一下.

##第六部分总结.公司招人,都是需要工作经验的人,什么是工作经验?基本就是项目经验.所以一定要做项目.以前那些重点的东西,你当时只是了解了一下,

在你做项目的时候,要再去深入的理解一下.

这一章写完了.回顾当时学习时候的状况,基本都是  好难--做项目--不过如此--继续新知识--东西好多好难--做项目--不过如此--继续新知识--...

这样一个过程.一定切记多动手,没有信息的时候,写一段代码出来就好了.

广告:欢迎加入QQ群;261758627 交流.

时间: 2024-12-09 06:27:41

写给java初学者的相关文章

Java初学者

一位资深程序员大牛给予Java初学者的学习路线建议 java学习这一部分其实也算是今天的重点,这一部分用来回答很多群里的朋友所问过的问题,那就是我你是如何学习Java的,能不能给点建议?今天我是打算来点干货,因此咱们就不说一些学习方法和技巧了,直接来谈每个阶段要学习的内容甚至是一些书籍.这一部分的内容,同样适用于一些希望转行到Java的同学. 在大家看之前,我要先声明两点.1.由于我本人是Java后端开发出身,因此所推荐的学习内容是Java Web和Java后端开发的路线,非Java Web和J

一位资深程序员大牛给予Java初学者的学习建议(转)

一位资深程序员大牛给予Java初学者的学习建议 这一部分其实也算是今天的重点,这一部分用来回答很多群里的朋友所问过的问题,那就是我你是如何学习Java的,能不能给点建议? 今天我是打算来点干货,因此咱们就不说一些学习方法和技巧了,直接来谈每个阶段要学习的内容甚至是一些书籍.这一部分的内容, 同样适用于一些希望转行到Java的同学. 在大家看之前,我要先声明两点. 1.由于我本人是Java后端开发出身,因此所推荐的学习内容是Java Web和Java后端开发的路线, 非Java Web和Java后

Java初学者都必须理解的六大问题<3>

Java初学者都必须理解的六大问题 对于这个系列里的问题,每个学Java的人都应该搞懂.当然,如果只是学Java玩玩就无所谓了.如果你认为自己已经超越初学者了,却不很懂这些问题,请将你自己重归初学者行列. 问题四:final关键字到底修饰了什么? 沈阳463整形医院程序final使得被修饰的变量“不变”,但是由于对象型变量的本质是“引用”,使得“不变”也有了两种含义:引用本身的不变,和引用指向的对象不变. 引用本身的不变: final StringBuffer a=new StringBuffe

转载:一位资深程序员大牛给予Java初学者的学习路线建议

一位资深程序员大牛给予Java初学者的学习路线建议 java学习这一部分其实也算是今天的重点,这一部分用来回答很多群里的朋友所问过的问题,那就是我你是如何学习Java的,能不能给点建议?今天我是打算来点干货,因此咱们就不说一些学习方法和技巧了,直接来谈每个阶段要学习的内容甚至是一些书籍.这一部分的内容,同样适用于一些希望转行到Java的同学. 在大家看之前,我要先声明两点.1.由于我本人是Java后端开发出身,因此所推荐的学习内容是Java Web和Java后端开发的路线,非Java Web和J

Java初学者容易犯的代码错误

1. 不会判断空 空指针异常是所有Java初学者接触最多的异常,没有之一.原因是,你们拿到一个对象后容易不假思索的直接使用(直接给这个对象的属性赋值,直接调用这个对象的方法等),不报异常才怪呢!下面是最经典的判断空的例子: private boolean isEmpty(String str){ if(str==null || "".equals(str)){ return true; } return false; } 2. 在for循环嵌套里调用底层查询数据库的方法 这种方式一定要

致Java初学者

精心整理资料点击获取 前言 ? 能看到这篇文章的朋友,应该都或多或少的了解Java,也许你现在是个菜鸟还在成长的路上.再此期间你一定遇到了很多困惑疑虑,对未来的学习方向感到很迷惑.作为过来人我非常了解你们现在的处境.我是从2014开始接触Java这门编程语言的,从2017年从事Java相关开发工作,也是一个奋力奔跑的菜鸟,直到今天我还在不断的学习,提升自己的技能,学无止境,学习永远在路上.回顾自己的学习历程,也是充满了困难与挑战,也层迷茫与失落过,但最后都坚持过来了.今天特此写这篇文章,就是为了

自己写一个java.lang.reflect.Proxy代理的实现

前言 Java设计模式9:代理模式一文中,讲到了动态代理,动态代理里面用到了一个类就是java.lang.reflect.Proxy,这个类是根据代理内容为传入的接口生成代理用的.本文就自己写一个Proxy类出来,功能和java.lang.reflect.Proxy一样,传入接口.代理内容,生成代理. 抛砖引玉吧,个人觉得自己写一些JDK里面的那些类挺好的,写一遍和看一遍真的是两个不同的概念,写一遍既加深了对于这些类的理解.提升了自己的写代码水平,也可以在写完之后对比一下自己的实现有哪些写得不好

代写程序|java二叉树字典查询(qq 928900200)

This assignment will help you practice and understand better the Binary Tree and Binary Search Tree data structures, their operations and implementations. You are to design a small dictionary using the Binary Search Tree data structure. Each entry ma

(今天是第一天开始写博客)写一下java集合类使用中容易出现的错误,慢慢积累

java中经常使用到的集合类有:Set,Map,List 关于Set,我犯了好几次的错误: ①Set1=Set2,实际上是让Set1也指向Set2了,如果此时Set2改变,那么Set1也会改变.算是一种地址赋值吧~ 如果想要让Set1中的元素与Set2中的元素相同,应该使用Set1.addAll(Set2). 其实,还有字符串也是一样的. if(str=="#"){...} 这样的写法,是不对的,条件不会成立的,因为"#"的地址与str的地址不一样. 正确:if(s