Java小白到大神的心路历程(Java SE)
万事万物皆有其发展规律,学习Java也不例外。
以下是我根据教学经验,总结出来的小白在学习Java各阶段时的心路历程,当你在学习期间欣喜、困惑时,不妨看一看,也许这些都是必经之路。
使用Java完成第一个Hello World
根本不关心什么Java的发展史、JDK配置的原理,只想照着书(或跟着老师)把第一个Hello World运行出来。大多数学生,不论用什么办法,还是能够成功运行的,运行后非常开心,感觉自己马上就是一个程序员了。
变量、选择结构
这个阶段最大的难点不是java本身,而是自己的思维方式。因为人类进化出来的思维,远远快于编程语言的处理流程。
举个例子,学习if的时候会让你判断“当一个数是三位数的时候,输出‘合法’,否则...”,那到底if后面的“三位数”该怎么判断?人脑经过了几千年的进化,只要看一眼数字,就马上能够知道它是不是三位数,根本不需要什么判断,直觉能辨别出来。所以这个时候,当你想用计算机编程描述这个“判断”时就懵了,因为你无法将人脑的思维直接显化成计算机程序。怎么办?懵的原因是人脑太快、而计算机太笨,所以我们得让自己变慢、变笨一点,才能符合计算机的思维。怎么变慢、变笨?可以让自己的思维逻辑退化一点,退化到小学甚至幼儿园时的状态。回忆在小学期间,数学老师是不是教过你“如果一个数字>=100,并且<=999”它就是一个三位数。对了!当思维退回到小学的状态时,也许你就能写出来判断三位数的代码是:if(数字>=100 && 数字<=999)。发现没有,这个阶段,根本不是难,而是太简单了,以至于你脑子还不适应这种太简单的思维方式。
此阶段总结:没有难度,只是还没有编程的思维方式,解决的唯一办法:多敲代码。只要真心想学,大部分人还是能顺利完成此阶段的。
循环结构、数组
这应该是很多人第一次真正遇到门槛的地方。很多学生,在此阶段最爱问的问题就是“老师,语法我都记住了,但就是自己写不了程序”、“老师,你上课讲的代码我都懂,但就是自己不会写”。等一下,这些问题好像挺熟悉的,是不是曾经在哪里听过?高中或大学时的英语课上,我们好像也经常这么问英语老师“老师,单词我都会拼,但就是写不了作文”、“老师,你上课讲的如何写作文,我都能听懂,但就是自己写不出来”。所以,怎么办,你只要回想一下你是如何学习写英语作文就行了,一个字“练”。多背几篇作文、多仿几篇作文,反复!反复!反复!然后突然有一天,自己也不知道发生了什么,就突然会写作文了!停一下,这句话是不是又听熟悉的?理科生在化学“酸碱中和滴定”的实验课上,是不是能听到一句话“当最后一滴刚好使指示剂颜色发生明显的改变,而且半分钟内不恢复原来的颜色,即为滴定终点”,听不懂的没关系,因为这个实验还配了一张图,如下所示。
这个实验大致是说:某一种液体本来是碱性的,我们可以向这种容器不断注入酸性溶剂,从而使得它变成酸性。但是在注入的初期,液体会一直抗拒,始终保持碱性。不过只要你坚持注入酸性溶剂,它会在某一滴溶剂的作用下,突然一跃而上变成酸性。也就是说,你只要坚持,就会突然有一天达到你想要的。重点是:这个实验告诉我们,碱性转为酸性的过程 不是线性的,而是突变式的;学习也一样,学java时的自我感觉并不是“每天进步一点点”,而是在前期很长一段时间都感觉“努力了没用”,但只要你不放弃,在你依旧坚持不懈后,就会突然一个时刻恍然大悟、从此不再是小白了。这也正好符合哲学上量变到质变的过程。
说了这么多,只是想告诉你,在学习循环、学习任何东西时其实是一样的。初期总是那么的迷茫,那么的无助,感觉自己付出了那么多,但好像得不到任何收获。但不论是自然科学,还是人文社科,都在告诉我们:这些都是正常的现象。你只管坚持,当到达“那一滴”的时候,你就成功了。
面向对象(类和对象、抽象类、接口、OOP三大特征等)
很多人在接触Java之前,已经学习过学校开设的C语言课。在面向对象以前,编程的重点可能就是一些简单的数学问题(水仙花数、回文数、求几个数之间的最大值、冒泡排序、打印几个图形等)。但从面向对象开始,又会进入一个全新的领域,开始真正接触Java了。总之,又要换思维模式了。以前可能都习惯将全部的功能都写在一个main()方法里了,但从面向对象开始,这些“习惯”都要一一打破,然后重新培养。很难,但大家都一样。
除了思维方式要重新培养以外,这个阶段对逻辑的要求也越来越高了。现在开始,我们不再把全部的功能都往main()里面堆,而是可能会把一个功能写在8个类的20个方法里,然后你还得非常清晰的知道这8大类、20个方法之间是如何相互关联的。这就像很多人看《红楼梦》,对每一个人物角色都挺熟悉的,但把红楼梦里所有的人物摆在一起,让你理清他们之间的各种错综复杂的恩怨情仇关系时,就头晕眼花了。
Java应用(集合、文件、网络编程、IO/NIO、JDBC等)
学习这些内容的特点是:初学时觉得难,熬过之后就觉得简单。原因很简单,因为这些内容大多属于应用层面、属于API的调用而已。说白了,就是记一些类名/接口名/方法、记一些“编写套路”。例如JDBC,第一次写时,会觉得步骤太烦、繁琐、麻烦!但写上10次之后就发现,每次编写JDBC的代码90%以上都是相同的,甚至可以把它复制下来存留,以后再用时直接粘贴完事。
实际上,很多学生在学这里时,刚开始感觉一头雾水,但随着练习次数的增多,自己也发现每次编写的代码都差不多,慢慢也就不再深究理论,而是把代码背了下来。
多线程
初学JAVA时,“用循环解题”是第一个难点,理解“面向对象的思维”是第二个难点,而“如何使用多线程”应该是很多初学者的第三个难点。(如果还觉得其他哪个知识点难,应该就是你练习太少了)
为什么那么多人觉得多线程难呢?第一,它的确有点难度;第二,3年以内的开发者很少接触到多线程。换句话说,很多人只是在学习多线程这一章的时候,写了那么几个标准的多线程代码。多线程这堂课下课后,就几乎没再接触过Thread了,因此觉得它难也是情理之中的事了。
我个人建议,在第一次学习Java时,当遇到循环、面向对象、多线程、甚至后面学习各种开源框架等“难点”时,如果当时没有学懂,就暂时放下、假装自己学会了就已经OK了。为什么这么说呢?因为据我的教学经验,很多搞技术的学生都有一种“强迫症式的较真态度”,对于一个知识点,如果没搞懂就非常难受,非得把它彻底搞明白后,自己的思想才能解脱,才能安心去学下一章的新知识。 对于这种“较真”的学习态度,好还是不好?得看你所处的学习阶段了。如果你是大一大二的自学学生,那我非常建议你对每个技术点都去“较真”、都去深挖,等你熬到最后,你一定是大神,大神中的大神。但如果你是大学快毕业了,为了找份工作而临时报了个5个月培训班,那就请你先别“较真”了。培训班的学习强度一般非常大(忽略那种水货机构),一般都是一天一个大知识点。当你对“循环”较真不放手的时候,老师可能都把数组讲完了;当你被多线程折磨的时候,老师可能都把Web前端结课了。所以,如果你当下的学习时间非常紧张,就别较真了,对“难点”学个一知半解就放手,跟着老师学下一章一定是个非常好的建议。况且,对于那些难点问题,没有几个初学者能够一次学明白。并且对于软件开发来说,很多时候把一个知识没有彻底搞懂,根本不会影响你去使用它。试想一下,你学习“循环”多久了,你能保证掌握了全部的循环习题吗?
以上是我对学习Java SE的一些建议,如果觉得有用,请点一下分享、在看。阅读数多的话,会继续更新我对学习其他技术的建议~
- 完 -
InterfaceA是接口,new InterfaceA[2]正确吗?
还在用构造方法给属性赋值?
"hello"+null = ?
读者交流 | JAVA过时了吗?
自己写的java.lang.String能用吗?
答疑 | synchronized有指令重排序的功能吗?
服了,list.add()也会报错!!!
一道JVM面试题,答错率超90%
10行代码2道题,全答对的你月薪多少了?
自己写的java.lang.String能用吗?
Java小白到大神的心路历程(Java SE)相关推荐
- c 语言转换成java语言,求助大神!!!JAVA转换成C语言
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 //此处不要看,c++应该内置了这个函数,不需要自定义 Array.prototype.remove = function(val) { var inde ...
- Java必看电子书,从小白到大神一网打尽免费送
对于程序员来说,个人感觉最佳学习方式是看书,视频花费时间太长,而博客则不够系统.初学相关领域最好的方式就是找到一本经典的好书,然后啃完它. 本贴子收集了几本Java学习的经典书籍,从入门到深入,每一个 ...
- android checkbox监听另一个checkbox选中和不选中_一个真正0基础小白学习前端开发的心路历程...
摘要:真正的0基础小白学习前端开发的心路历程. 距离第一阶段的结束敲响了末尾的声音,抱着初心从开始8号的学习到第一阶段的结束这期间要应付期末考试应付自己的各种事情学习时间总是挤出来的这次学习让我受益匪 ...
- 一个真正0基础小白学习前端开发的心路历程
摘要:真正的0基础小白学习前端开发的心路历程. 距离第一阶段的结束敲响了末尾的声音,抱着初心从开始8号的学习到第一阶段的结束这期间要应付期末考试应付自己的各种事情学习时间总是挤出来的这次学习让我受益匪 ...
- 菜鸟到大神的上位历程,即学即用走向人生巅峰
菜鸟到大神的上位历程,即学即用走向人生巅峰 结合个人经历总结的前端入门方法,总结从零基础到具备前端基本技能的道路.学习方法.资料.由于能力有限,不能保证面面俱到,只是作为入门参考,面向初学者,让初学者 ...
- 编程小白和大神都想要的百元级物理外挂(装逼利器)----KeyPad++编程键盘
这两天夜不能寐,终究还是做出了这个违背祖宗的决定.... 是的,我正是要将一代代编程大神薪火相传的的终极奥义公之于众. 当你刚开始熟悉和掌握一门语言时,无论是C++还是Java亦或是Python,我们 ...
- java项目开发-大神案例分享:京东京豆项目06
你还在找一个纯技术交流的地方嘛?你还在找一个每天更新资料的群吗?现在加裙256242993,无论是小白还是大神,可以尽情的讨论. http://v.youku.com/v_show/id_XMjY0M ...
- 这款NLP神器火了!关键词一键提取、结果高度可视化,堪称「小白进阶大神」的实用工具包 | 开源...
点击上方,选择星标或置顶,不定期资源大放送! 阅读大概需要15分钟 Follow小博主,每天更新前沿干货 转载自:量子位 如何快速优雅地处理你的NLP数据集? 试试这款号称「从小白到大神」的Texth ...
- Java反射机制大神必学系列之 ,高级与低级的差别在哪里?
Java反射机制大神必学系列之 ,高级与低级的差别在哪里? java学习爱好者 2019-05-20 19:08 前言 今天介绍下Java的反射机制,以前我们获取一个类的实例都是使用new一个实例出来 ...
最新文章
- 用“逐步排除”的方法定位Java服务线上“系统性”故障
- 动态取得当前程序的版本号
- .NET Remoting程序开发入门篇(五)
- android 进制转换
- SAP IBASE father component的创建
- 并发运行的最佳实践_并发最佳实践
- pythonset是什么类型的游戏_Python集合(set)类型的操作
- linux 跑天龙八部游戏脚本,求推荐天龙八部脚本(能自动打怪,捡包之类的)
- 当前方法的代码已经过优化,因此无法计算表达式的值
- php简单记账本_介绍你3个记账本小程序,让你花钱有规划
- 获取手机本地的图片或者照相机照像的图片 为头像
- python_dataframe总结1
- matlab m语言建模,MATLAB M语言高级编程
- 【游戏开发实战】Unity UGUI序列帧动画(蓝胖子序列帧图)
- wordpress英文主题怎样汉化成中文网站模板
- 如何解决卸载McAfee时出现“处于托管模式时无法删除”问题(转)
- 计算机网络速度慢原因,导致电脑网速变慢的七大原因
- 设计过程(概要设计和详细设计)
- 关于 Windows 10 如何扩展分区与合并分区
- RGB及sRGB与XYZ坐标转换