1.Java基础
很多朋友一上手就开始学习Android,似乎太着急了一些。Android应用程序开发是以Java语言为基础的,所以没有扎实的Java基础知识,只是机械的照抄别人的代码,是没有任何意义的。那么Java学到什么程度才算是过关呢?我个人认为至少要掌握以下两个方面的内容:
a) Java基础语法:
具体的知识点列表可以参考《Java知识点列表》。这部分内容没有讨价还价的余地,必须烂熟于胸。至于具体的学习方法,可以看书或者是看视频,但是关键是要多加练习,无论是书上的练习还是视频里面的练习,都需要仔仔细细的完成。
附:《Java知识点列表》
1.开发环境
1.1 Java SDK下载和安装;
1.2 环境变量的配置(PATH 和Classpath)。
2.编程基础
2.1 标识符命名规范;
2.2 Java数据类型;
2.3 运算符与表达式;
2.4 分支语句(if,switch);
2.5 循环语句(for,while);
2.6 函数的定义方法。
3.面向对象基础
3.1 面向对象与面向过程语言之间的区别;
3.2 面向对象的基本思想(封装);
3.3 类的定义方法;
3.4 对象和类的关系;
3.5 对象的创建方法;
3.6 通过对象使用成员变量和成员函数的方法;
3.7 构造函数的作用;
3.8 函数的重载;
3.9 static的作用;
3.10 this的作用。
4.面向对象高级
4.1 面向对象基本思想(继承);
4.2 继承的作用;
4.3 继承的语法特点;
4.4 super的使用方法;
4.5 面向对象基本思想(多态);
4.6 对象的向上转型和乡下转型;
4.7 final关键子的作用;
4.8 抽象类和接口的定义方法;
4.9 抽象类和接口在面向对象编程当中的地位和意义;
4.10 Java当中异常的定义;
4.11 异常的分类以及各自的特点;
4.12 try…catch…finally结构的使用方法;
4.13 throw和throws的使用方法;
4.14 自定义异常的使用方法;
4.15 内部类的定义方法;
4.16 匿名内部类的定义方法;
4.17 内部类的常见使用方法;
5.线程
5.1 线程的基本定义;
5.2 在Java当中实现线程的两种方法;
5.3 线程运行状态介绍(准备,运行,阻塞,死亡);
5.4 线程间通信的方法;
5.5 线程同步;
5.6 线程死锁。
6.IO
6.1 IO基本概念;
6.2 输入流和输出流的作用;
6.3 Java当中IO流的分类方法;
6.4 常见IO类的使用方法。
7.常见类库
7.1 类集框架;
7.2 日期相关类库的使用方法。
b)设计模式:由于在Android系统的框架层当中,使用了大量的设计模式,如果没有这个方面的知识,对于Android的理解就会大打折扣。设计模式的种类非常之多,一个一个的全部掌握,是不现实的,必须首先掌握面向对象的基础设计原则,有了这些基础原则的支持,就可以举一反三。这部分内容可以在《Effective Java》和《Agile.Software.Development:Principles,Patterns.and.Practices》这两本书中找到。
2.Linux基础知识:
大家都知道,Android系统的基础是Linux操作系统。在开发过程当中,我们也需要使用到一些Linux命令。所以说一些Linux的基础知识是必须的(话说现在的程序员,不懂Linux都不好意思跟人家打招呼),推荐大家看看《鸟哥的私房菜》这本书,写的相当不错;
3.数据库基础知识
这个比较简单,就是一个增删改查的数据库操作,可以看一下这本书:《SQL编程练习与解答》
4.网络协议
至少需要学习两种基础的协议,HTTP协议与Socket协议;
5.Android基础知识
有了以上的铺垫,再来看Android,是不是觉得轻松了很多呢?至于基础知识的学习顺序,最好的方法就是按照Android SDK帮助文档当中的Dev Guide里面的顺序。
6.服务器端开发知识:
由于很多Android应用程序都需要服务器端的支持,所以掌握一些服务器端开发知识还是非常有必要的。至于选择哪一种服务器端知识进行学习,就比较麻烦了,因为技术的种类实在是太多了:
a)Java EE:
就是上面邮件当中所提到的SSH—Struts+Spring+Hibernate。这种技术的优点的功能完整、强大,已经使用了很多年,而且既然大家已经非常熟悉Java了,那么学习SSH看起来也顺理成章。但是使用这种技术开发服务器端程序,非常麻烦。即使是一些简单的功能,也可能需要大量的代码和配置文件来实现;
b)PHP:
简单易学,开发快速。但是我们需要多学一种语言,是否得不偿失,就要大家自己判断了;
c).NET:
这项技术的特点和Java EE差不多,但是要想掌握.NET,则需要掌握c#,也是个麻烦的事情;
d)ruby on rails:
这是我个人最喜欢的服务器端技术,简洁,优雅,寥寥几行代码,就可以实现很复杂的功能,但是这需要Ruby语言知识作为基础;
至于选择哪一种技术,就看大家自己的判断了。
要成为一个专业的Android开发者,以上的这些知识都必不可少。看起来好像很多,多的可怕。所以还是那句话–“耐心,耐心很重要”。