“Java程序设计”是北京理工大学计算机学院开设的选修课程,主讲教师是金旭亮。本教学资源主要包括上课所使用之PPT(己转为PDF格式)和范例源码,2013版的课件是我经重新调整并设计的,大大增强了编程技能训练的内容,同时在内容安排上更加注重循序渐进。
这些课件在设计时力图同时支持课堂教学及课后学生自学,基本模式是:我在课堂上只讲授重点内容,并现场展示编程开发的过程和技术关键点,以及与之相关的计算机理论知识和内部运作机理,学生在课后应该完成以下几件事:
(1)运行并仔细阅读每个示例,通过修改示例代码扎实掌握Java面向对象编程的语法与相关知识。
(2)完成课件中所布置的作业(非常重要!),这些作业都经过了仔细的设计与安排,完成它们是培养Java编程基本技能所必需。除非你打算随意地在计算机专业混个毕业拉倒,否则,请一定要动手完成这些编程练习。遇到困难,一是找同学讨论交流,二是使用搜索引擎,最后一招,找老师。
课件及代码说明:
本课件适用对象:学过C语言,对编程有兴趣,打算日后从事软件开发工作,不要求有面向对象编程经验。
本课件所有代码基于JDK7,在Eclipse 4.X和Netbeans 7.X中测试通过。
21讲全课程介绍:
第1部分 Java编程起步
Note:本部分内容极为基础,主要是介绍Java结构化编程的相关语法,涉及到一点面向对象知识,有C语言基础的同学会学得很多。
对于编程基础不扎实的同学,请认真地完成本部份中所有的编程练习。
这部分上课是一带而过,只讲其中的一些要点,完整内容同学们需自学。
第1讲 Java导论与Java开发环境
包括两个PPT:
(1)Java导论与Java开发环境:介绍Java开发的基础知识,学会安装相应的软件并正确地配置好它们。
(2)Eclipse初步:学会使用Eclipse编写Java应用程序。
第2讲 Java应用程序与Applet
包括两个PPT:
(1)Java Application基础:这是最简单的Java程序类型,本课程大部分实例是此类型,用它来学习Java非常合适。
(2)Java Applet基础:Java Applet是运行在浏览器环境中的Java应用程序,不过此技术在实际中很少用,此讲同学们只需浏览一下,只要知道Applet是怎么回事,如何运行它就够了。
第3讲 Java语法基础
包括两个PPT:
(1)Java语法基础,介绍数据类型、变量、运算符等基础知识,注意与C的区别。
(2)控制结构:Java分支与循环语法。
第4讲 方法
这一讲的重点是Java方法重载的语法特性,以乃训练递归的编程技巧。另外,本讲还介绍了Java中日期相关的类型、如何处理大数字以及浮点数比较等内容。本讲包容不少的编程练习,主要目的是训练最基本的编程技能。
第2部分 Java面向对象编程基础
本部分主要介绍Java实现面向对象编程(OOP)的基本方法,其中所介绍的OOP思想其实是独立于Java语言的,是现代软件工程师的基本功。需要下功夫扎实掌握,打好OOP基础非常关键,不然,在Java技术领域将行之不远。
第5讲 类和对象
本讲主要介绍如何在Java中设计一个类的基础知识,包括类的初始化方法,“==”的含义,this的用法,装箱与拆箱等,其中,理解对象变量的含义是关键。本讲还介绍了javap反汇编.class文件的基本方法。
本讲属于Java面向对象编程最为基础的内容,必须牢固掌握。
第6讲 包
包类似于C++的namespace,主要用于解决同名冲突和实现代码重用,这部分的关键是要掌握如何定义包,如何使用包,包与文件系统的路径有何关系,请务必在命令行程序中实验成功如何运行放在包中的某个Java类中的main()方法。另外,本讲还介绍了Jar包的用途和制作方法。
Java的可复用组件多以Jar包的形式提供,因此,把握本节内容,对于实际开发很重要。
第7讲 字符串与正则表达式
本讲包括两部份内容:
(1)字符串。在开发中,String算是最常用的数据类型了,它的最重要特点是String对象内容只读,另外,施加于两个String对象的“==”和"equas()",其含义是不同的。在比较大的循环中应该避免进行过多的字符串拼接操作,的确需要时,可以考虑使用StringBuffer或StringBuilder类取代。这些是String部分应该掌握的重点内容。
(2)正则表达式。本讲PPT只是介绍了正则表达式的基础知识,有专门介绍正则表达式的技术书籍,感兴趣的同学们可以在课外进一步地深入学习。强调一下,正则表达式在开发中非常有用,同学们必须具备基本的编写正则表达式的能力。
第8讲 数组
本讲的重点是理解对象数组,特别要注意在课上介绍过的它的内存分配模型。
第9讲 继承、接口与多态
这一讲是经典的面向对象编程内容,包容相当多的且非常重要而基础的知识与技能,难点也不少:
(1)重点注意子类父类字段与方法同名时出现的种种现象,并能解释其原因。
(2)不可变的类有什么好处?思索:为何String类要设计成只读的?
(3)理解多态这一概念,并体会多态给开发所带来的正面与负面影响。
请注意教师在课堂上现场编程演示和分析的那些代码示例。
第10讲 异常处理
本讲介绍了Java异常处理的基础知识。初学者往往对异常处理重视不够,事实上,在开发中带来麻烦的往往就是未经处理的各种异常,另外,用户往往也会因为你的程序中有未捕获的异常而对程序产生不满甚至立即卸载它。要想开发出健壮的应用,就必须认真掌握这部份知识。本讲中介绍了“捕获JDK异常转换为业务逻辑异常”的异常处理策略,这在多层应用中很有用,需要特别注意一下。
第11讲 泛型程序设计
Java最初在设计时是没有考虑要支持泛型的,只是后来随着Java应用越来越广,开发者有这个需求,才加入了泛型特性,但由于JVM不好改,所以javac编译器对泛型代码采用了“擦除”的方式进行编译,这是Java泛型技术的重要特点。本讲介绍了Java泛型编程语法特性,JDK中广泛使用了泛型,泛型知识对掌握Java技术很重要。
第12讲 内部类
本讲介绍Java内部类语法,学习时注意其应用场景。
第13讲《面向对象编程基本技能》
这部分重点介绍了Java编程实现对象比较、对象组合和对象复制的基本方式,是面向对象编程必须掌握的基础知识。
第14讲 数据结构与算法的Java实现
数据结构与算法对于开发而言属“内功”,很重要,也是许多公司面试题的重要内容。计算机专业学生都学过《数据结构》,因此本讲的重点在于如何用Java实现它们,并给出不少编程练习,许多练习进一步扩充就可以作为本课程大作业的内容。动手完成本讲所布置的编程作业,有助于培养同学们基本的Java面向对象编程技能。
第15讲 对象集合
JDK中包容数十种各种类型的对象集合,还有一堆的各种接口,给人的感觉相当混乱。在实际开发中,一定要花点时间依据具体应用场景选择合适的对象集合,并且要注意避开这些对象集合中隐藏的一些陷阱,因此,在使用它们之间进行充分的测试是有必要的,确保你真正地把握了要用的这些集合的特性。本讲内容较多,对JDK中最主要的一些集合类型进行了介绍,并提供了数十个实例展示它们的用法。本讲最后还给出了一些编程题目,同学们应动手完成它们。
第3部分 深入探索Java技术领域
在本部分中,将集中探讨一些JDK中的特定技术领域。这些技术领域在实际开发中被频繁地应用。
第16讲 文件与流
文件可用于存储应用程序数据,而流则是Java读取文件的基本方式。本讲介绍了JDK中与文件相关的类和组件的用法,包容大量实例,许多能直接应用于开发中。
第17讲 序列化
序列化技术主要用于两个场景:(1)将对象当前状态保存到文件等持久介质中(2)在网络中远程传输对象到另一台机器上。在实际开发中,把对象进行序列化是非常常见的。本PPT主要介绍了Java中如何把对象以二进制形式序列化到文件中的方法,仅仅只涉及Java序列化技术领域的一部分。
第18讲 反射
所谓反射,就是在程序运行时通过动态查询Java组件的类型信息,完成对象创建、方法调用等功能。反射为设计开发支持插件的软件系统所必需。有大量的Java框架使用了反射技术。本讲分为三部分:
(1)反射:介绍Java反射的基础知识
(2)JavaBean:JavaBean其实可以看成是一种“遵循标准”而实现的类,Java平台为访问它们提供了额外的支持,JavaBean在Java EE中应用得比较多。
(3)注解:Java中的“注解(annotation)”指一些附加在代码之上的,以“@”打头的“小标签”,比如“@Override”,通过使用它们,能够在不更改类源代码的前提下,给类附加特定的功能或信息。各种Java框架和技术,比如JUnit之类,都大量地应用了它们。
第19讲 GUI界面设计与事件处理
本讲包容相当丰富的内容,共分为5个子部分:
(1) Java GUI设计基础:介绍了Java GUI设计中的一些基础知识和术语,本部分需重点注意“GUI程序设计的基本步骤”,理解“容器”、“控件”、“布局管理器”、“事件”几个重要概念。
(2) 使用GUI控件:包容大量的例子,介绍各个具体控件的使用方法。
(3) 容器布局管理器:介绍Swing界面设计中常用的几种布局管理器的用法,包容相应实例。
(4) Java事件处理模型:此部分极为重要,是Java GUI界面设计技术的核心所在,其所介绍的内容许多都可以用在Android上,此部分还包容大量的实例,可供同学们进行课程设计时参考。请同学们务必扎实掌握本部分内容。
(5)Java GUI编程技能训练:提供了一些编程场景,完成这些编程任务,能让你的Java开发能力提升一截。
第20讲 Java图形程序设计
本讲介绍JDK中所包容的2D绘图功能,包括各种绘图对象及绘图方法的介绍,还介绍了分形。本讲设计了丰富的编程练习。
第21讲 多线程
在多核CPU大行于世的时代,多线程编程是每一个软件开发者的必备技能。经过多年的持续完善,JDK中包容了丰富的多线程组件,能满足绝大多数开发需求。本讲分为三部分,每部分都包容着重要的内容:
(1)多线程技术基础:介绍了进程、线程的基础知识,如何编写多线程代码,如何控制线程的执行过程,线程组,Thread Executor Framework以及GUI程序中的多线程等重要内容。
(2)线程同步:本部分介绍了Java同步方法、同步代码块的使用方法,如何协调线程之间的协作关系,锁,还有JDK所提供的各种线程同步对象和线程安全的集合对象。
(3)多线程部分练习手册:提供了多道由浅入深的编程训练题,完成它们能帮助同学们提升自己的开发能力。
Java多线程技术是Java学习中的难点,也是各公司面试题中经常出现的技术领域。此部分请同学们务必下功夫掌握。