“夜雨声烦不烦”通过精心收集,向本站投稿了10篇如何系统有效的学习android编程,以下是小编帮大家整理后的如何系统有效的学习android编程,仅供参考,欢迎大家阅读。
- 目录
篇1:如何系统有效的学习android编程
准备
自学之路是一项很苦逼的差事,自学的人很多,但能真正坚持下去的很少,在准备自学Android之前你需要具备以下基本能力能帮助你坚持到最后。
1、对Android开发、对互联网感兴趣,兴趣是最好的老师,只有发自内心的感兴趣才能真正坚持下去;
2、强大的学习能力,既然自学那学习能力肯定是必备,要有很强的求知欲,持续不断的学习能力才有机会走的更远,注意,是持续不断的学习能力;
3、解决问题的能力,自学过程中肯定会遇到各种各样的坑,这个时候不要急躁,不要气馁,不要怕耗时间,一步一个脚印去解决问题,这会为你今后走上工作岗位带来极大的优势;
4、设定一个目标,比如我当初测试转行开发,自学Android的目标简单直接,因为开发比测试工资高,我转行就是为了多挣钱。我想大部分人的目标应该都跟我同感。
篇2:如何系统有效的学习android编程
Java基础
Android开发是基于Java语言的,所以毫无疑问的是必须要掌握Java基础,如果你完全没有任何Java基础,这步是必须要好好学习的,如果已经有Java基础的,这步可略过。
对于很多初学者来说入门往往是最难的,如果只看书完全看不下去,也很难理解,所以强烈推荐初学者以书籍结合视频的方式学习Java基础,所以给你推荐:
《Java语言程序设计》,优点是非常基础,适合初学者,建议只要看到前十四章就ok了,第十二章也可以略过。
book.douban.com/subject/6529833/
Mars老师的Java4Android视频课程结合学习,便于初学者很好的理解与入门。
pan.baidu.com/s/1c1beYo4
如果每天至少坚持学习3-4小时的话,这一阶段差不多花费1--2个月之间都算正常,范围因人以及花费的时间而异。
篇3:如何系统有效的学习android编程
Android入门资料
经过上面的学习相信你已经掌握了Java基础了,是时候开始正式进入Android学习的阶段了。
Android学习之路
我自己整理的Android开发详细资料,这篇博客影响了无数Android开发者,可谓Android开发必备,某种意义上来说,自学Android有这篇博客足够了。
《第一行代码》
郭霖大神的最新力作,全书由浅入深、系统全面地讲解了Android软件开发的方方面面,而且是针对Android 4.0进行讲解的,非常适合Android入门。
book.douban.com/subject/25942191/
Mars老师的Android开发视频教程
marschen.com/portal.php
极客学院Android开发视频教程
www.jikexueyuan.com/path/android/
慕课网的Android视频教程
www.imooc.com/course/list?c=android
至于入门书籍我认为推荐一本适合你的就够了,而且大部分书籍内容大同小异,但是视频教程就就不一定讲解的内容都一样了,大家可自行选择视频教程。
篇4:如何系统有效的学习android编程
Android开发工具
科学上网
科学上网可以说是程序员必备技能,身为Android开发者那更得会这项技能,不管你是使用Google也好,还是到Android官网查找资料,下载SDK都必须要翻墙。可以使用goagent也好,修改host,购买vps、vpn等等方式,这个技能不是本文重点,大家可自行搜索去配置。可以告诉大家的是对于新手来说最简单有效的方式是购买VPN,可以节省不少精力,至于哪个vpn比较好用不敢保证,我使用了两年的vpn个人感觉相对较稳定,感兴趣的可以到我博客主页去寻找。
Android Studio
虽然目前的很多学习资料与书籍都是Eclipse为主,但是Google已经明确未来Android会抛弃Eclipse,所以强烈建议大家直接使用AS,学习的初期花点时间熟悉使用,上手很快就可以对照eclipse方面的教程转到AS了。当让我也在AS1.0刚发布的时候就已经出了一个针对新手的Android Studio+Gradle详细教程,是一个系列,帮助你们更快的入门。
AndroidDevTools
我是强烈建议Android开发者一定要学会科学上网的,但是如果你觉得暂时还不需要接触外面的世界,那么我的一个朋友搭建的网站,可以让你们无须翻墙即可下载使用官方SDK。
模拟器Genymotion
首先建议大家能不用模拟器都不要用,模拟器的启动速度简直是龟速,现在市面上安卓手机很便宜,打算做Android开发没个安卓手机真是说不过去。如果你非要用模拟器那就推荐你用Genymotion,目前来说最快的模拟器。具体可以看我下面的博客,最后还是要建议大家不要使用模拟器!!
问任何问题之前都要先去搜索引擎查一下,这会训练你的解决问题的能力,而等你以后工作,实际开发中可以知道,有一大半的时间你是在搜索度过的,很多问题都已经是前人遇到并总结的方案。对于新手来说可能百度勉强够用,但是建议一开始就养成使用Google的习惯,百度在娱乐八卦方面确实靠谱,但是技术方面查出来的东西基本千篇 一律,有些答案甚至还会起到误导作用,直到有一天我的老大告诉我用Google,我才知道这个世界上原来还有另外一个搜索引擎,自此便成为脑残G粉,所以一定要用Google!一定要用Google!一定要用Google!!!(重要的事说三遍)
StackOverFlow
用Google之后搜索出来的东西还是习惯性的点击中文结果,直到有一天我发现基本每次搜索排名第一的都是这个网站,于是尝试着点进去用我蹩脚的英语阅读,之后真是相见恨晚的感觉啊,上面几乎能搜到你遇到的绝大部分问题,某种程度上来说推荐用Google搜索的原因之一是因为排名靠前的答案基本都在StackOverFlow上。
GitHub
现在是全球最知名的程序员开源社区,程序员几乎人手一个GitHub账号,在上面你可以找到各种各样牛人分享的开源项目,包括Google、Facebook、Twitter等开源的代码,简直是号称进阶必备,某种意义上看大牛的代码是最好的学习进阶方式。
篇5:如何系统有效的学习android api
英语
老实说,没有比英语性价比更高的,需要学习的东西了。靠着别人的翻译,或者机翻,终究不是办法的。笔者自己日语英语姑且算是熟练掌握的地步,但在初期直接看那些全英文的书籍,仍然会觉得头痛(谢谢HKUST虐我),但坚持下来就会发现其实计算机的英语还是有一个范围的,多看看熟悉起来,就会觉得并没有什么难,甚至比起很多翻译来说更容易看懂。
混迹GitHub就会发现国内的很多开发者英语上欠缺还是很大的,尤其是一些description和readme直接就上中文的。即便你英语渣,机翻也行啊。毕竟是计算机社区,英语才是通用语言。用中文去一些国外开发者的仓库里提issue或者回复也是一种很粗鲁的行为。
如果让我说一种对技术帮助做大的语言,那必然就是英语。有了英语,才能真正地独立学习。
问小白问题之前,你Google过吗?如果让我看到一个开发动不动去搜百度,那我估计会武断地认定他很菜。其实Google是我们最好的老师,只要能正确把握问题的关键字,几乎没有找不到的答案,大部分会在StackOverflow上,其他散落在GitHub、博客等等地方。
如果你要找的知识实在冷门,比如react native的一些深入用法,android上的视频so阉割这种,那恐怕只能找找做这块的朋友或者自己研究了,国内有一些好心的开发者或许会分享在自己的博客。
至于科学上网,这个话题相关的技术太多了,请自行找方法,VPN也好,SS也好,都很简单,相对的投入和产出对程序员来说性价比是很高的。实在不想花钱的去用AWS的免费云服务器搭SS也行。
实践
看是没有用的。比如看一篇关于Hybrid App原理的文章,或许它写得很好,但其实就算看完了,让我自己去写一个,或者讲讲怎么去做一个我们应用的版本,Android/iOS端通用的方案,最后也是支支吾吾说的不知所以。最后还是要去实践做一些Hybrid页面才能真正掌握,能说清楚这里面的原理和应用场景。
纸上谈兵终觉浅。
警惕体力劳动
当你的工作成为一种体力劳动,而自己无法从中获得新的体验和知识的时候,需要警惕究竟发生了什么。
想得太少
对做的内容停留在完成的阶段,而不对更好的方案,实现细节去思考更多,比如用了某个API,会不会去仔细看看其究竟是怎么做的。或许你知道Handler,Looper,那你知不知道主线程的一切,四大组件的生命周期,各种View的触摸事件都是消息驱动,在mainLooper里面进行处理的呢?
工作内容重复
当Focus在一块上太久之后,难免会碰到这种瓶颈,这时候可以看看是不是能换一块做,比如做做缓存、Hybrid、启动优化、视频等等。可以做的领域很多,实在发现兴趣不在此,换着做后台或者前端也行。倘若因为个人原因,比如公司不让换或者可能工资会低很多,挤一挤时间在side project里面搞搞也可以,只是有没有心的问题罢了。
我面试过一些做Android 5-6年的程序员,但大部分真的连一些优秀的2-3年经验的开发者都远远不如,问设计不懂设计,问流行的开源项目回答就是“好像听说过”。我不希望我认识的开发者以后变成这样的人。但你若是总是重复劳动,难免像这样1年的工作经验重复了5年。
在额外学习的时候,更多关注的应该是不同的地方,而不是说这个学Python,下个月去学Go,想想语言的差异性在哪里,自己试试看做一些项目,培养全栈工程师的底子。还在念大学的时候,我学了C、C++、Java、Node.js、Python、Ruby、PHP、HTML、Perl、SQL/Redis/HBase等等等等,但对每个的理解都不够深刻,现在想来那时候是做错了的,思考的都不够深刻,也直到这一两年,我才足够明白这个错误。
你应该有自己的专长,但也要能从全局的角度思考问题,一个不懂前端的后端老大会导致前端过重不灵活,反正只要自己这儿的模块清晰就好,一个不懂前端的前端老大也会让下面的人不要抱怨,做出来就好。
公司问题
发生在一些项目经理逼得特别紧,老大又比较无能的地方。项目经理为了向上面交待,对工程师说“这个进度能不能再压一下呀”,或者干脆直接不听工程师的意见强行缩短工期,导致没有时间去深入学习。老大明知这种情况,却睁一只眼闭一只眼。这种公司,还是离开为妙。
一个合格的leader,或者说mentor应该做些什么?至少从我的角度来看,尽管对公司他需要对项目负责,但对团队内的开发者,他更应该做的是观察和指导,看清楚那些团队毒瘤(不做正经事,得过且过,假加班,抢功劳推脱责任,等等),营造团队氛围,而不是一味Push催进度和表现自己。
记录和总结
写博客是为了什么?
至少对我来说,写下的东西更多是对自己的一个总结和交待。如果我能写下来,至少能证明我有信心自己确实是这么去理解的,没有去坑人。另外,姑且也算是一种成长的足迹吧,偶尔自己还会去看看笔记。
分享也是目的之一,希望大家能互相进步,这样才能促进发展。
写博客也好,写一些笔记也好,点点滴滴也是对自己的一种整理。
问自己
想清楚自己要的究竟是什么。
做全还是钻?想做一个超强并发量的后台?想黑别人的系统?想做出精准有效的推荐算法?还是想做别人能实际用到的产品?
笔者正是因为想要的是后者,所以成为了Android开发(为什么没有选iOS,大约是Android的开放性吸引了我)。而现在,因为发现自己欠缺的(对前端驾轻就熟,大部分的事情对我来说只是体力活,而自己想承担一个完整的项目却又不行),所以又重新拾起了Node.js,看起了ES6,思考设计和产品的问题。
希望大家都能想清楚自己想做的,要成为的样子。能自主地去学习。毕竟师傅带进门,修行靠个人。我不想鸡汤,大家各自走好,望来日可并肩一起,彼此说一句“很高兴遇见你”。
篇6:如何系统有效的学习android api
1、每节课程至少反复听三遍。
2、每节课都跟随讲师,把代码敲出来,并调试成功。
3、中间遇到代码问题,可通过项目经理”或其他方式寻求答案,暂时解决不了的问题记录下来,通过知识的积累一定会慢慢得到解决。
4、学习自己调试代码的方法,从而自己找到代码的问题所在,不要过于依赖他人或放弃。
5、多看技术大咖分享的技术精华、多看技术牛人博客。
关于Android的一些问答
1、如何区分JAVA和Android?
简单地说,一种是操作系统,一种是开发语言。
Android是一种基于Linux的开放源码操作系统,主要用于便携设备(智能手机,平板电脑)。
Java是一种面向对象的编程语言,它的最大的特点就是开源和免费,这因为如此,中国的大部分大型的软件系统是用Java开发的。
2、JAVA和Android有什么关系?
Android的应用层上的应用程序是用Java编写的,以Java作为开发语言。但是,Java并不等同于Android,因为Android SDK引用了Java SDK的大部分,少数部分被Android SDK所抛弃。
所以,要想从事Android的开发,就必须有Java基础。另外,在Windows系统中可以搭建Android的Java开发环境,这样就可以实现在Windows系统中测试Android项目了。
3、学Android好还是JAVA好?
很多小伙伴刚接触学习编程语言都是零基础,迫切想知道哪个就业方向会更好? 学习难易程度怎样?
Android是主流智能手机的操作系统、Java是一种开发语言、两者没有好坏优劣之分、只是两种职业岗位的选择。
学安卓从事移动互联方向开发。
学Java从事软件、网站开发、而安卓上的应用大多是Java编写的。
所以建议在安卓前期的Java学习阶段中、要用心学好。
4、学了Android或JAVA,能互相转岗吗?
学Android或者Java,后期能不能互相转岗,首先要搞清楚你要处在哪个行业:互联网?手机?企业软件?软件外包公司?游戏开发行业?行业不同,使用的语言也不尽相同。
在开发中,Android与Java的开发环境都可以用Eclipse,但具体操作差异非常之大。
Android开发,Java只是基础,不仅Java基础要好,还需要掌握XML,配置文件和数据的传递和返回等技术,熟悉JSON的解析,开发和调试工具的使用,多参考API[SDK]。
如果你学好了Java课程,后期转型做Android开发也是非常容易的,因为具备Java基础。
Java和Android的前景都不错,不过近几年Android的发展要比Java好些,如果懂jJava的话,Android就很容易了,Android在很多地方和Java很类似,如果你确定要做Android的话,其实没必要学Java在转Android,可以直接学Android的,只是学了Java之后学Android比直接学android简单些。
篇7:如何系统有效的学习编程知识
系统有效的学习编程知识的方法
一、基础篇(理论与硬件)
这一部分关注的是计算机的基本理论与基本实现。包括硬件结构理论,以及软件与硬件的交互。以理论开篇,在机器语言部分深入,最终在操作系统部分达到高潮。
1、计算机实现计算的原理。这包括门电路是如何实现计算的,时序电路是如何实现存储的,冯诺依曼体系结构是如何将二者结合实现了真正的现实世界的计算机的,以及它是如何反映图灵机这一理论计算模型的。其间会学习布尔逻辑。
2、如何控制计算机硬件。这部分使用的“工具”就是机器语言和汇编语言。我们需要理解机器语言的本质,以及它如何以“汇编语言”这种更容易理解的形式为程序员提供了控制硬件设备的机会。这部分可以学习到很多非常低级但是本质的内容。
3、操作系统是如何工作的。如果你理解了上一部分的计算机硬件相关的问题,那么理解操作系统的工作原理将不会那么困难。另外你将明白操作系统作为硬件和上层软件的中间层次,是如何大大简化了人们对硬件的操作过程的。
二、进阶篇(软件系统)
1、编程语言。这包括结构化编程语言以及面向对象编程语言。因为有很多选择,其实以一门语言开始即可,如果你在前面正确的理解了硬件与机器语言,那么C语言入门真是太简单了,如果你运气不好,觉得C很困难,那么即使是从Python、Javascript开始学习也没问题。重点在于理解编程中和语法相关的基本概念,并了解一些简单的算法知识。
2、数据结构与算法。说白了就是如何合理的组织数据,通过其结构特点来简化编程或者提高计算的效率。这里的内容是模式化的,所有人都需要学习无序结构、有序线性结构、树结构、图结构等。另外,排序算法、查找算法必须学好,特别是算法策略如递推、递归、蛮力(穷举)、分治、动态规划等也必须有所实践和了解。切记不必深陷其中,这里是个大坑,你不可能真的“精通”他们。
3、编程语言是如何实现的。这里主要涉及编译原理。当你站在高级编程语言实现者的角度再来认识编程语言本身的时候,许多问题豁然开朗。这会深刻的改变你的编程观。可惜的是即使是很好的学生在这里也会遇到很大的阻力。真正的问题不是这方面理论性有多强,而是教材都很烂——包括国外教材(什么龙书虎书鲸书都根本不是为初学者准备的),而且语焉不详。这导致大部分人都感觉莫名其妙高深莫测。如果你不是有志攀登软件设计的最高峰,可以绕行。否则从表达式运算解析开始,逐步引入变量,类型,控制结构,函数,再到对象,一步步构建出解析器,然后结合前面学习的硬件接口知识,将其转换为低级表示,最后你会发现没有那么可怕。
三、基础领域篇(必备领域知识)
1、互联网络是如何构成的。这部分包括网络的基本知识,主机间通信的原理,转发设备的实现,以及互联网络的构成。这是网络编程所需的基础知识。除了理解低级协议,也要花一些时间了解应用层的协议,特别是 SMTP、POP3、FTP、HTTP 等,重点是了解他们的基本原理,而不是每个细节。因为每个协议都有自己的标准,光 HTTP 协议就够你研究 6 个月以上了。这里注重的是原理。
2、如何管理大量的数据并在其上建立信息系统。数据库是一个很好的例子。包括数据库系统的基本理论,实现原理,以及设计原则。同样,这里不是真的在教你如何构建一个数据库系统,而是在学习他的核心原则,重点是学会如何合理的设计表结构,以及实现效率良好的SQL查询语句。
四、扩展领域篇(特定领域知识)
1、基于特定平台的软件开发。如何在Windows平台、Linux平台、Mac OS平台或者手机、平板、电视机、微波炉上完成开发?这需要学习特定的软件平台提供了哪些编程接口,如何编译并部署,如何调试和测试等知识。这部分就是软件工程师职业生涯中最耗费时间的部分。
2、有效的软件研发是如何实现的。这包括软件结构的设计知识,软件实施流程的管理知识,以及一些细微而繁杂的内容。人们通常用软件工程一词来概括。但事实上软件工程站的角度要更高一些,这里只是涵盖软件工程的一小部分。
五、科技领域篇(研究性知识)
如果你对人工智能、科学计算、图像处理感兴趣,这里还有大片的区域等待你探索。
事实上,上面的描述有些吓人。每一个领域都够耗尽去很长的时间。不过好消息是大部分知识都只要求在理论上理解。真正的耗费时间的部分还是在与编程、编程、编程。不是每个人都会用到数据库系统,也不是每个人都需要懂得汇编语言。但是这些背景知识会对你有帮助。让你不再害怕,对自己更有自信。
如果你希望自己成为一个很棒的开发人员,那么上述知识都是必须的。但是却依然远远不够。
学无止境,计算机科学尤其如此。
我说的实在太多了。思考和打字差不多耗费了我一个小时。我不太确定这些对你是否有帮助。我希望有,至少有那么一些。但我有点害怕,似乎我的描述不是在帮助你克服困难,而是制造了更多看似难以逾越的高山。
但我想说:走入编程,然后走出编程。编程是为解决问题服务的,我们应当多思考想要解决的问题是什么。这会在我们迷茫的编程生涯中起到指南针的作用。它会告诉我们需要学习什么,然后由我们自己来回答如何学习。
我的一位朋友是做生物科技的,他需要在海量的DNA序列里快速的进行基因片段的比较。为了完成这一任务,他学习了 Python,并着重学习了数据结构和算法相关的内容。虽然最后他写出来的程序外表看起来很简单,但是却速度飞快,为他的事业贡献了无形的资产。
这就是他的起点。但是他并不满足。他继续学习如何增强程序的稳定性,如何编写更好的界面等等。现在他的软件真的非常棒,一些关键的效率相关部分已经替换为C++实现,界面也做得很专业。
天啊,真的无法相信,这就是一位生物领域的研究人员自己亲力亲为的成果。即使是用苛刻的眼光来看,现在他的软件也相当不错。
我举这个例子,想说明的核心在于,知识的学习,要想高效,一个广为大众所接受的观点就是应当围绕一定的具体的目标来进行。如果我们知道我们想要解决的问题是什么,那么我们进一步确定要学习哪些编程知识就会比较容易。相反,为了学而学,泛泛而看,效果通常都是很差的。只能给你留下一些大致的印象,而无法成为你真正的可用的知识。
学习编程知识的建议
先有一个想法,像学钢琴也有一开始想弹奏的曲子,提出一个想用生产出来的产品,或者买一本评价好的入门书,做出书中提出的“产品”为目标
将这个目标细化,可以找专业人士帮忙,梳理出知识的“切入点”以及周围的“关联点”,然后开始计划第一次迭代(做出第一样东西),可以是一段很短的程序或者一个作品,但必须有具体的产出
每次产出后都重新调整计划,重要的是自己或者专业人士要能具体地评估这次产出的价值。如果是跟着书就自然容易了,就是跟书上对一下就是了
如果要具体给到一个切入点,那么我的建议是两个选择:
从C语言开始,然后学习算法,走科班路线
从网页制作开始,然后学习网站工程,走产品路线,这是产品中最好入门的了
不必太担心学错,因为到达工程级别,你学过的八成知识都不会被作为工具使用,而它们的只是实现了它们的历史使命——成为你现有某个实用知识的中间点/桥梁、为你现在的学习效率做了一次铺垫。
实际一点地说,对于一个“毕业了”的程序员,学习一门新的编程语言,可能只需一周,而熟悉需要三周,熟练地用于开发是三个月,精通只需一年。这也是大概而已,严谨地说,不同的语言所关联的知识点的数量是不一样的。这也不影响举例,因为在这之前,一个大学生在学习他们的第一门语言,通常是C/C++,用了一个学期,还可能挂科呢(那是态度问题或者是Dota的问题)。
首先吧,别想速成。这要能速成,那么我们专业人士不就该喝西北风去了?
所以要真解决了学习范围的问题后,你下一个问题应该是“要实现**应该具备那些知识”一类的了。等你在某个点扎根后,想的就是利用这个学习能力,去另一个自己更喜欢的领域,还是就此为据点扩充范围,亦或者深入这个领域(也是扩充的一种吧,方向不同)。
最后重申的一点,就是软件开发本身就是一个学习的过程,只是产出的代码具备不同的价值而已。软件的特殊性已经导致了难以重复地写出两段相同的代码,一般只会改写重写,或者重用原来的代码(就是复制黏贴或者引用调用)。
编程这个领域的知识是怎么样的
然后要延伸一下时代问题。
从面向对象开始,互联网时代兴起,到现在的移动互联网时代,编程绝大部分的目的是在于创造“软件”,而创造软件也由于世界上最聪明的人群高速集中涌入,以及时代的需求压力,已经形成了一整套工程学,也就是“软件工程”了。
现在“编程”被集中在“软件工程”的需求中,产生的一个结果就是“工程化”,而“工程化”就是整个生产体系开始逐步分化以及逐步专业化,从而出现了这个领域中的各种针对性专业,比如“前端工程师”、“测试工程师”、“算法分析师”、“.NET软件工程师”。
在整个软件的开发周期中,我们都需要跟不同的人在不同程度的合作。即使是个人开发者,都会用到开源的代码、各种下载的人家做好的工具。
这就是工程化后的结果,也就是“编程”被和其他不同的专业,比如数学、医学、建筑、人文等科学结合在一起然后具体地分化成了各个关联的模块。这些模块有一个特点,就是整体上“临近相连”。
这什么意思呢?
举例说明就是,但从(某个)网站开发而言,就有客户、老板、美工、前端工程师、服务端工程师、数据库管理员、网络推广等等。这些角色两两间可能有工作上的直接关联,单指这个软件项目的开发工作的话。
无论哪个是因,哪个是果,现在的情况都是没两个角色间的知识必定关联和有交集。在往广度上看,整个软件工程领域以及世界都如此,只是软件工程领域如建筑领域一般,有比较大的定量的专业化,一切都是有根据有标准的。
而至此,形成的一个结果就是,没有人能掌握所有知识;所有知识都是有关联的,追寻着关联的路径学习产生的效果普遍情况下是最大的。
后面那条可以简单地证明,假设两样知识八竿子打不着,那么你就要等很久它们才能连起来,发挥加成效用。虽然乔帮主说过,总有一天这些dots总会连起来的,但是嘛......靠谱点也不是不好。
篇8:如何才能系统有效的学习编程
学习基本构造,并用真正的问题测试
如果你使用相应的书籍或某种形式的教程学习编程语言,那么现在你可以通过它们来学习了。
此时,你会觉得正在阅读的书或上的课程并没有你刚开始认为的那么神秘。
现在你要做的是熟悉所学编程语言的每个基本结构,然后使用这些构造编写一些代码。
你需要尽可能实际地尝试和思考将所学的东西与问题和应用程序联系起来,当你将技能应用到实际问题的时候,这样才能更好地理解和记住这些知识。
下面是大多数编程语言所包含的一些基本结构:
- 能够输出到屏幕上
- 基本的数学能力
- 作为一个变量存储信息
- 组织代码成函数,方法,或模块
- 调用函数或方法
- 布尔逻辑评估的性能
- 分支条件语句(if / else)
- 循环语句
篇9:如何系统有效的学习java编程
第一步:JDK软件开发包时java软件开发环境,
包括jre运行环境和jvm虚拟机,在oricle官网下载javaSE版本JDK包;配置好环境变量就可以使用了。
第二步:java初级语法学习,
1.基本数据类型整形,字符型,字节型,长整形,短整形,浮点型,双精度,布尔型;
2.运算符+,-,*,/,%等;
3.控制流(while,switch,if else);
4.数组的定义方式。
此阶段基本无难度,只要了解练习例题。
第三步:java面向对象学习,
1.类和对象;
2.java语言三大特性,封装、继承、多态;
3.一些关键字学习(static,final,abstract,extends)等。
这是重点,大家根据知识点一步步研究学习才是关键。
第四步:java应用编程,
例如:文件IO,集合(类似C语言数据结构),异常处理,线程,网络,JDBC数据库操作等,都是掌握面向对象以后,在查找不同的类使用类中不同的方法达到应用的效果,所以并不会很难。等基础语法掌握了就可以继续后面框架学习(java web方向,android学习),相信明确思路你会豁然开朗,更有学习动力。
篇10:如何系统有效的学习java编程
1.return 一个空的集合,而不是 null
如果一个程序返回一个没有任何值的集合,请确保一个空集合返回,而不是空元素。这样你就不用去写一大堆 ”if else” 判断null元素。
Java 的标准库设计者已经在 Collections 类中放了一个空的 List 常量 EMPTY_LIST,除此之外,还有 EMPTY_MAP, EMPTY_SET,真是贴心。
2. 小心使用 String
因为字符串相加或者拼接的方式都会在对象池中查找字符串是否存在,如果不存在则创建,这样在拼接的过程中会产生大量中间过程的字符串,占用内存资源。StringBuilder效率优于StringBuffer,但是StringBuffer线程安全。
另外,在实例化一个字符串对象,构造函数应该避免发生直接实例化,例如:
3. 避免不必要的对象
一个最昂贵的操作(在内存利用率)是java对象的创建。因此,建议只在必要时创建或初始化对象。下面的代码给出了一个例子:
4.Array 和ArrayList 选择
ArrayList和Array是我们在实际编程中经常使用的容器,而且因为ArrayList相当于动态化的数组,所以它们之间有太多的相似,以至于我们在选择哪种来存储元素的时候,会有小小的迷惑,他们都有注解的优缺点,选择真的取决于你的真实场景。
java程序员入门必须克服的5个障碍
1、不知道选择哪种语言
很多人会问:“我应该先学什么编程语言?”能有此一问,自然是因为你明白程序划分的细致,但也说明认知也仅仅停留在这一层上。
如果你心中已经有了一个既定的目标或者说是想要完成的项目,那么就可以依此做出选择。
1.如果你想构建iOS app,那么你需要学习Objective C或Swift。
2.如果你想构建Android app,那么你需要学习Java。
3.如果你想构建Web app,那么你需要学习JavaScript。
其实现在我们可以使用JavaScript来创建任何类型的项目——无论是简单的web和移动app,还是高级的硬件项目。大多数行业中都有它的身影:音乐、医疗、游戏、时装等等。
此种语言被淘汰的概率极低,且市场需求广泛。如果你追求稳妥,那么笔者建议你学习此种语言。
2、不知道如何学以致用
选择好方向之后,刚开始学习理论总是很轻松的,而且网上也有许许多多免费和付费的在线课程。
很多人都能较快的掌握理论知识,甚至能够做到自己来解释某个代码片段的工作原理。然而一旦实际应用理论来解决问题并编写新代码的时候,就会无力应对。
导致这种情况出现的原因很简单:技能空白。
比如说游泳。你可以阅读大量的技术文章,然后解释得就像一个专业教练。但是,要想实际应用这些理论,就需要大量的实践、斗争和错误——你肯定会吞下大量的水!
所以我们需要将理论结合大量的练习,具体的方法步骤如下:
1.选择一个复杂的项目。最好这项目得能够激起你的兴趣。
2.将这个任务分割成小而独立的任务。例如,“实现登录页面”是一个很大的任务。但你可以将其分解为多个小任务。而关于一个小任务我们可以再次做个细分:不应该超过20行左右的代码。一次不使用太多的理论概念。一次专注一项任务,而不是并行解决多任务。不要跳到下一个任务,除非你已经彻底测试过当前任务,并确信没有问题。
3.自己在开始任务之前知道所有必要的理论知识。有时候,你可能不知道需要学习什么理论,这很正常,所以你需要向他人寻求帮助:程序员朋友,导师,或类似Dev Store的平台。
4.你解决了任务,获得了经验值。
3、不知道吸取教训
圆满完成任务的感觉很好,但如果你完成任务后,直接开展下一个任务,那么你浪费了一个绝佳的学习与成长机会。
完成任务后,最好做一个完成的总结。例如问问自己以下的问题:
1.哪些边界情况会导致我的代码失败?即使现在还没有失败,有哪些应用程序状态可能会破坏代码?
2.我的代码是否足够整洁?对其他开发人员,甚至是自己而言,代码是否易于理解和改变?因为以后可能需要修复隐藏在这段代码中的问题,或者根据其他产品规格改变代码。
3.我的方法是最好的吗?有没有其他选项是我可以选择使用的?各个方案的利弊?这任务是否值得用不同的方式解决?
4.此模块与其他模块是如何交互的?是否会对其他模块造成负面影响?是否容易被其他模块影响?
4、不知道攻破难点
这里有两种难点。
第一种,你不知道如何解决。
你不知道从哪里开始?你可能会随机地去尝试,或者从其他地方复制一些你自己也不明白的代码。但是,这是没有帮助的。即使你复制来的代码有效也没用。因为当你今后再一次碰到类似的任务,你依然不能解决。
如果你想妥善解决任务,那么首先你得知道你为什么卡壳。下面是一些可能的原因:
没有很好地掌握这些理论知识:
语言语法:库或API的工作原理,某个具体方法或类的工作原理。
编程范式(例如:异步编程):系统运作(例如:HTTP请求是理解Web开发的关键)。
如果是上述情况,那么可以去复习理论知识,如果依然摸不着头脑,也可以去找人寻求帮助。
任务太大了,那就分解为一个个小任务。
也有可能是因为你读得太快,忽略了一些你以为熟悉其实似是而非的概念,所以无法理解任务要求。
第二种,你知道如何解决,但解决方法无效。
这是编程中最常见的情况,哪怕是那些经验丰富的资深程序员也是如此。你的解决方案之所以不起作用最大的可能是你的代码中存在着bug。
如何修复?方法是调试代码。这也是作为一个程序员需要学习的最重要的技能之一。这不是可以随便凑合的事,也不是玩幸运猜猜猜游戏。如何寻找bug是有具体步骤的。而且很多书中都有教这个技能。
不幸的是,这是很多新手程序员失去动力选择放弃的难关。很少有课程会说明调试的重要性。如果你不知道如何正确地调试,那么它就是不可战胜无法攻克的难关。
很多人担心会花太多时间用于调试代码。这是正常的,在你第一年的编程规划中这是不可避免的。
甚至,你还得学着去喜欢调试。不妨将此看成是一个机会,一个修复错误提高编程能力的机会。当你解决了一个bug,可以问问自己这个问题:“我为什么会犯这种错误?以后我该如何预防再犯?”
还有一个好主意是将找到的bug写成编程日记,方便你总结和学习。
5、不知道如何利用资源
当你在学习代码,或调试代码时,可以咨询很多材料:书籍、课程、教程、导师,开发者社区等等。
在你学习这些资源时最常见的问题是,你并没有完全了解幕后发生了什么事情,也不知道概念是如何融入到更大的蓝图中的。
简单的打个比方:你在某个问题上花了10小时,最后终于有人提供一个解决方案,你往往会在高兴之余拿了就用,并不考虑太多。而这样做的弊端不小,笔者建议你在解决问题之后:
1.思考自己之前的思维过程。问问自己,做错了什么,对于这个特定的解决方案有哪些是值得你先前的思路借鉴和改进的地方。
2.询问他人的思维过程。她/他是如何解决的呢?向对方学习,吸取经验。
如何系统有效的学习android编程(推荐10篇)




