Java从入门到精通之过程篇
每个人的学习方法都不一样,一个人的方法不一定适合另一个人。我只能谈谈我自己的学习方法。因为我是完全自学Java的,从来没有问过别人,所以学习过程基本上完全是自己摸索出来的。我不知道这个方法是不是更好的方法,只能给你一些参考。
学习Java的第一步是安装JDK,写一个Hello World。事实上,学习JDK并不那么简单。关于JDK有两个问题很容易一直困扰着Java程序员:一个是类路径的问题。其实原则上是要搞清楚JRE的ClassLoader是怎么加载Class的;另一个问题是打包导入,如何找到类的路径。把这两个问题探索清楚,学习Java和使用JDK的障碍就消除了。下面推荐威尔逊的《Java深度冒险》,深入讨论这两个问题。
第二步是学习Java语法。Java的语法类似于C++。基本上,主流的编程语言不是类C就是类C++。没什么新东西,半天时间学语法就够了。需要注意的是,有几个关键词是不容易弄清楚的,比如public,protected,private,static,什么时候用,为什么用,怎么用。这可能需要一些指导。我一开始完全是自己想通的,花了我很长时间。但是后来看到《用Java思考》这本书,里面讲了这些概念。
第三步,学习Java的面向对象编程语言的特性。比如Java的继承、构造函数、抽象类、接口、方法多态性、重载、覆盖、异常处理机制等。对于一个没有面向对象语言背景的人来说,我觉得这个过程会比较漫长,因为在学习Java之前没有C++的经验,只有C的经验,我花了大概一个月的时间把这些概念都吃透,反复揣摩、修改、尝试书中的例子,反复阅读那些章节的内容。读了五遍以上,我完全明白了。但我觉得如果我有C++的经验,一两天应该够了。然后,在这个过程中,你可以看一下《用Java思考》这本书,这本书对面向对象的解释很透彻。可惜我读书的时候没有看到这本书,所以花了很多时间去尝试,去揣摩。
第四步,熟悉Java类库。Java的基础类库其实就是JDK安装目录下的包jre\lib\rt.jar。学习基础类库就是学习rt.jar基础类库里有很多类。据说有3000多。我没数过。但对我们来说真的只有四个核心,分别是
Java . lang . *;
Java . io . *;
Java . util . *;
Java . SQL . *;
对这四个包的研究可以写成一本厚厚的教科书,奥赖利就是这样做的。我觉得时间紧的话,读四本书是不可能学习的。我觉得比较好的学习方法如下:
首先你要通读整个包框架,了解整个包的类、接口、异常的构成,能够找到一篇介绍整个包框架的文章。这些专门介绍包的书的前几章应该是这些通用框架内容的介绍。
要掌握一个包的整体框架,不一定要熟悉每个类的用法,记住它的属性和方法。我都不记得了。相反,你需要知道包的哪些方面是由类组成的,这些类的用途是什么,核心类分别执行什么功能。我培训人的时候一般都是一个包一个包的讲,不可能详细介绍每个类的用法。但是我反复强调,我告诉你的这些包,并不是告诉你如何调用一个类的方法,也不是要求你记住一个类的方法调用,而是要知道Java给我们提供了哪些类,每个类用在什么地方。当我遇到问题的时候,我知道哪个班或者几个班的组合可以解决我的问题。当我们具体写一个程序的时候,你知道用哪个类来完成你的工作就足够了。编码时,具体的方法调用是在编写代码的同时检查文档。一切都在文件里,你不需要记住它。其实3000多个类的近10万个方法调用你都记不住。因此,把握每个包的整体框架是极其重要的。
第五步,通过上面的学习,如果学习比较扎实,Java的基础就打好了。剩下要做的工作是清除文档中除上述四个包之外的其他一些有用的类。相信在这一点上,Java的自学能力已经培养出来了,可以达到直接学习document.tion的水平,除了GUI编程,JDK其他会有用的包是这些:
Java . text . *;
Java . net . *;
javax . naming . *;
这些包里真正用到的类其实很少,只有几个,所以花不了多少时间。
第六步,Java Web编程
Web编程的核心是HTTP协议,与Java无关。如果不熟悉HTTP协议,可以学好Servlet/JSP编程,但是不能达到举一反三的目的。因此,对HTTP协议的研究是必要的。如果你熟悉HTTP协议,有很好的Java编程基础,学习Servlet/JSP是很容易的。我花了不到一周的时间学习Servlet/JSP,然后开始用JSP做项目。
在Servlet/JSP的学习中,servletdocument.tion仍然是重点。Servlet API是最常用的类,所以掌握它需要的时间比较少。浏览所有这些类,试着再写几个例子。Servlet/JSP编程的本质就是通过HTTP协议反复调用这些类在Web服务器和浏览器之间对话。另外,对于JSP,需要熟悉几种常用的JSP标签。如果记不清具体的写法,就临时查一下。
0条评论