一、写给Java初学者的话
在决定选择走Java开发这条路的过程中,相信大多数同学都会遇到一些困惑,得不到有效的解决,也得不到高手的指点;遇到问题更得不到及时的解决,从而造成有些同学就半途而废。我非常了解你所想的这些,因为我也亲身经历过。从刚接触Java到现在,我觉得会Java开发不重要,而经验是最重要的,今天就以一个过来人的角度来分享下经验。希望能帮到大家。
二、从头做起,从小事做起
“千里之行,始于足下”,意思是:事情是从头做起,从点滴的小事做起,逐步进行。这8个字就好比用“还没学会爬,就想跑”描述一个人一样。
学习任何东西都必须遵守这个规则,如果基础都不牢稳,何谈飞的更高,走的更远。学习编程也是这个道理,只有把一门语言的基础学好,才能写出更漂亮的代码。
说一个我的经历吧,有时候我在LeetCode刷一些算法题的时候,经常看到其他高手提交的代码中调用一些自己看不懂的JDK自带的API,例如力扣的第一题“两数之和”,我第一次写的代码如下:
public int[] twoSum(int[] nums, int target) {
int[] indexs = new int[2];
for(int i = 0; i < nums.length; i++){
for(int j = nums.length - 1; j > i; j --){
if(nums[i]+nums[j] == target){
indexs[0] = i;
indexs[1] = j;
return indexs;
}
}
}
return indexs;
}
而高手的代码如下:
public int[] twoSum(int[] nums, int target) {
int[] result = new int[2];
Map<Integer, Integer> map = new HashMap<Integer, Integer>();
for (int i = 0; i < nums.length; i++) {
if (map.containsKey(target - nums[i])) {
result[1] = i;
result[0] = map.get(target - nums[i]);
return result;
}
map.put(nums[i], i);
}
return result;
}
由于以前基础并不牢固,甚至都不知道HashMap还能这么用,不满大家说像Map,List,Set集合都是基础中所学过的;但是由于不常用就忘记了。所以说要把基础掌握捞还是很重要的,无论你从哪里得到的一张Java工程师路线图,或者规划之类的文章,都离不开Java的基础,例如:基础语法、面向对象等等。
可以随便去搜一下招聘信息,都会写:熟练掌握Java编程基础。
三、日积月累,循序渐进
“不积细流,无以成江海”意思是比喻学习必须日积月累,循序渐进。学习任何语言都是长期积累的,不仅学习编程语言需要长期的积累,学习英语、俄语等等,甚至中文也是学到老活到老,我敢说,几乎没有一个人能把所有的中文都认识完。
学习Java开发也是需要时间去积累的。可以参考以下十万为什么:
- 1、为什么架构师审核代码的时候,一眼就看出来你这里将来可能会有BUG,会抛异常?
- 2、为什么的代码出了BUG,其他人一眼就可以看出来是哪里有问题?
- 3、为什么自己改个BUG需要半天,别人只需要几分钟?
- 4、为什么别人开发需求的时候很快,自己磨磨唧唧半天过去了,还没动手?
这些都是“经验”,没有经验何谈“一眼就看出将来会出现BUG”、“一眼就可以看出来哪里有问题”、“几分钟就可以改完一个BUG”、“开发很快”。
不急于求成,不好高骛远,要明确学习目标,Java可以做的有很多,Java可以编写桌面应用程序、Web应用程序、分布式系统和嵌入式系统应用程序等。当你点开此文章的时候,相信大多数同学都看到过Spring的字样。没错这就是Web应用程序,也就是我们所熟知的Web应用程序(JavaWeb),Java在Web应用程序领域是非常优秀的,因为Java有非常好的生态圈。非常适合开发各种企业级应用和业务系统。
四、五大秘籍
山不辞土,故能成其高,意思是山不推辞一粒尘土,所以才能那么高;寓意一个人做事,不管多么小的事,只要去做,终能成大器。
(1)择兵器
工欲善其事,必先利其器。合理的使用好工具,可以帮你节省百倍的时间去学习其他知识。现在开发工具也是很智能,例如IDEA, 有丰富的快捷键和智能的提示。我非常推荐初学者能够尽早的接触比较智能的IDE开发工具。这一点很多同学都有误解,有些同学认为我用记事本写出来不是更好吗。你写个HelloWorld用记事本还可以,你写个web程序可能比登天还难,如果真能写出来,也是件好事,说明你比99%的Java开发者都牛。还是推荐大家拥抱现代化科技。
可以看到用IDEA写个HelloWorld只需1秒的时间,如果用记事本,可能需要花1秒 * 100倍的时间。
(2)定目标
对于零基础学习Java的人来说,一定要有一个明确的学习方向,不能急于求成。很多人为了能快速入门Java,会直接入手项目,这不太实际,有的人不学基础,一看代码觉得Java很难就放弃了。所以我们在学习的时候一定要牢固基础,按阶段的学习,坚持下来才会有提高。
(3)制计划
初学者在学习Java时,往往会因为没有计划像无头的苍蝇一样乱撞,学习的内容不系统,最终导致学习效果低下,拖延进度。所以我们在学习的时候要制定好学习计划,按照计划走,从基础到进阶,一步一个脚印,只有这样,你才能学会怎么样解决问题,并加深自己对Java的理解。
(4)多实践
学习任何编程技术最忌讳的就是纸上谈兵,没有实际项目操作经验,这也是为什么很多人在学习完后迟迟找不到工作的原因。
我们学习Java一定要注重理论和实践相结合,在学习中尽可能的积累实战经验,这样才能在学完后与企业需求相接轨,达到用人单位要求。学习Java的过程虽然辛苦,但坚持下来终会带来回报。
(5)找方向
到了这个阶段,已经是根深蒂固了,或者说已经找到一些编程的感觉了。此时有些同学可能会懈怠,不知道自己学Java之后将来要做什么,不知道要从事什么样的工作,造成了很迷茫的现象。很多粉丝私信我都交流过很多这方面的内容,如何找准自己的方向呢?我给他们推荐了一个法宝,当不知所措的时候,就去招聘App或者招聘网站上去搜自己想从事的岗位,然后去看一下各个用人单位发布的招聘信息,里面有比较具体的岗位要求。如下:
例如查找:Java开发工程,可能会出来很多,去找一些薪资比较高的去看就好。
如上图所示,都有具体的要求,例如:了解分布式技术,熟练使用SpringBoot、熟悉Java网络编程,了解Java并发编程。熟悉HTTP、TCP/IP等网络协议。
我们知道了这些要求知道就可以照着这个方向去走就可以啦,肯定比自己东学一点,西学一点要强。
四、总结
我发现身边总有些小伙伴,刚学习Java的时候就去写JavaWeb了,但是没打好Java基础。有的小伙伴缺把Java基础学的很好,然后再去学JavaWeb。这就造成了2中现象,第一种看似学的很快,但是后来会遇到很多措手不及的问题,第二种现象,看似学的很慢,但是基础很牢,后来学习的东西就不这么费劲。
想给大家说的是,一定不要急于求成,如果总是急于求成,一定会吃哑巴亏的。相信很多人都懂;拿我自身来说,我以前算法学的并不是太好,但是我Java学的好,在面试的时候,就出现了很多亏,当面试官问到算法的时候,当然就会不知所措啦。所以提醒大家的就是,学习Java编程的初期,一定不要急于求成,要有计划的行动,跟着计划走会比自己摸索着更好。