《JAVA面向对象编程》([PDF] 孙卫琴著)
- 格式:doc
- 大小:51.50 KB
- 文档页数:10
第5章流程控制分支洽句使部分程序代码在淆足特定条件的情况卜才会坡执tin Java 语言支持何 种分文if >e<clse 语句和switch 语句,C 5」・1 if ・・・else 语句if-else i&句为两托分支语瓦.它的屆A 语袪为:若桿庁代码块空二涪训•则申知;出学世 流程控制语句(如ityelse 严句、for语旬、while i53Ja ovimh 运如筈)可作 刃万注也 可以采用如下方式实现。
•编程风格能使程序颐佑的可谀trr 卞ii 再必!ifei 已 足否为闰年为拥,来演示if--else 语句的用法。
对于特定的年份,只些满足以下恳年 件之一.就定闻年。
• 能被4耕除.但不能被100整除.• 能被400整除。
isLeapYeaWint year )方法用來判断某一年是否为闰年,卜面给出f 3种实现方式: /•• ^UrA -・•/public boolean isLeapYear (int vearX申 (year%4«»0 M yeartl00!«0; 11 (year«400>*0))return true;elsereturn false ;/*•切殆•/public boolean isLMpYear(int year)( boolean leap ; iff year<4!«0 )leapBUlse ;else if( yeartiOOs^O )]eap«true ;else if ( yeart400!»0 )lMpvfalM/•Iseleapatxue :return I MP ;如方氏三•/public boolean IsLeapYear (int year)( boolean leap ; if( yeart4・・0){if( yeartl00~0 )( if( yeAr*4OO"0) lcapetrue;else)else多路分文.考虑条件(3)岛力I 】if 语£1应4「伍勺的严申弓砰Him 伺扶犹冬迈■m ■则必须放4:大括計(}内:leap^false;)elseZp»false;return leap;”第•种方式用一个复杂布尔表达式來包含所有的判断条件。
面向对象编程思想语法Java虚拟机执行程序的原理项目运用设计模式性能优化✧熟悉Java语法,熟练地编译和调试程序。
✧按照面向对象的思想来快速理解JDK类库及其他第三方提供的类库,通过阅读JavaDoc和相关文档,知道如何正确地使用这些类库。
✧按照面向对象的思想来分析问题领域,设计对象模型。
✧在开发过程中运用现有的一些优秀设计模式,提高开发效率。
✧当一个方法有多种实现方式时,能够从可维护、可重用及性能优化的角度选择最佳的实现方式。
✧理解Java虚拟机执行Java程序的原理,从而更深入地理解Java语言的各种特性和语法规则。
软件开发生命周期:软件分析软件设计软件编码软件测试软件部署软件维护软件开发效率:可重用性可扩展性可维护性结构化开发:SA:Structure AnalysisSD:Structure DesignSP:Structure ProgrammingDFD:Data Flow Diagram 数据流图结构化开发中,方法是最小的子系统;面向对象开发中,对象是最小的子系统。
建立对象模型:自底向上的抽象 + 自顶向下的分解抽象:问题–> 对象 -> 类 -> 父类✧把问题领域中的事物抽象为具有特定属性和行为的对象✧把具有相同属性和行为的对象抽象为类✧若多个类之间存在一些共性(具有相同属性和行为),把这些共性抽象到父类中UML:Unified Modeling Language 统一建模语言Rational Rose 可视化建模工具:用于绘制UML图万物皆为对象对象具有唯一性对象具有属性和行为(成员变量和成员方法)对象具有状态(即属性取值)对象都属于某个类Java虚拟机是Java程序的解析器和执行器Java虚拟机提供的运行环境中,保证每个对象唯一性的手段是为它在内存中分配唯一的地址对象模型中的类可以看做是开发人员自定义的数据类型,Java虚拟机的运行时环境封装了将自定义数据类型映射到计算机内置数据类型的过程。
面向对象与Java程序设计(第3版)课程教案任课教师:朱福喜开课对象:软件工程学时/学分:64/4 课堂教学/课内实验: 42/22使用教材:朱福喜,《面向对象与Java程序设计》第2版,清华大学出版社,2015.7主要参考书:1. 叶核亚,《Java程序设计实用教程(第3版)》,电子工业出版社,20102. 耿祥义、张跃平,《Java大学实用教程(第2版)》,电子工业出版社,2008年3. 孙卫琴,《Java 面向对象编程》,电子工业出版社,20064. 张白一,《面向对象程序设计—Java》,西安电子科技大学出版社, 20085. 陈国君,《Java程序设计基础》(第4版),清华大学出版社,2014.86. (美)刘易斯、洛夫特斯著,罗省贤,李军译,《Java程序设计教程》(第六版),电子工业出版社,2009.17. Cay S. Horstmann / Gary Cornell ,《Core Java》, Prentice Hall PTR,20048. 埃克尔,陈昊鹏译,《Java 编程思想》,机械工业出版社,2007课程总体目标本课程是软件工程专业开设的学科基础课。
本课程的教学任务是通过Java 程序设计的课堂讲授、课内实验,课外自主试验等教学环节,培养学生程序设计使用Java语言进行程序设计的基本能力,并且养成学生良好的编程习惯和规范的编程风格。
使学生掌握较扎实的 Java 语言基础,理解面向对象程序设计的思想,为Java后续课程的学习打下坚实的基础。
课程的主要内容如下:1、绪论2、Java程序设计基础3、Java面向对象程序设计4、数组、字符串、向量和哈希表5、泛型、枚举与for语句的简化写法6、Java异常处理与递归7、文件与数据流8、Java图形用户界面程序设计9、多线程程序设计10、网络程序设计第1章绪论一、教学目的和要求了解Java语言的发展历史,Java语言的特点,学会安装配置Java开发环境,能够编译和运行Java程序。
《JAVA面向对象编程》[PDF] 孙卫琴著【目录】第1章面向对象开发方法概述 11.1 结构化的软件开发方法简介31.2 面向对象的软件开发方法简介51.2.1 对象模型61.2.2 UML:可视化建模语言61.2.3 Rational Rose:可视化建模工具71.3 面向对象开发中的核心思想和概念71.3.1 问题领域、对象、属性、状态、行为、方法、实现7 1.3.2 类、类型91.3.3 消息、服务101.3.4 接口111.3.5 封装、透明121.3.6 抽象161.3.7 继承、扩展、覆盖171.3.8 组合191.3.9 多态、动态绑定221.4 UML语言简介241.4.1 用例图241.4.2 类框图251.4.3 时序图261.4.4 协作图271.4.5 状态转换图271.4.6 组件图281.4.7 部署图291.5 类之间的关系291.5.1 关联(Association)291.5.2 依赖(Dependency)311.5.3 聚集(Aggregation)311.5.4 泛化(Generalization)321.5.5 实现(Realization)321.5.6 区分依赖、关联和聚集关系331.6 实现Panel系统351.6.1 扩展Panel系统371.6.2 用配置文件进一步提高Panel系统的可维护性39 1.6.3 运行Panel系统401.7 小结411.8 思考题42第2章第一个Java应用432.1 创建Java源文件432.1.1 Java源文件结构442.1.2 包声明语句452.1.3 包引入语句472.1.4 方法的声明492.1.5 程序入口main()方法的声明502.1.6 给main()方法传递参数512.1.7 注释语句512.1.8 关键字512.1.9 标识符522.1.10 编程规范522.2 用JDK管理Java应用532.2.1 JDK简介542.2.2 编译Java源文件552.2.3 运行Java程序562.2.4 给Java应用打包592.3 JavaDoc文档602.3.1 JavaDoc标记622.3.2 javadoc命令的用法672.4 Java虚拟机的运行时数据区692.5 小结712.6 思考题71第3章数据类型和变量733.1 基本数据类型743.1.1 boolean类型743.1.2 byte、short、int和long类型753.1.3 char类型与字符编码763.1.4 float和double类型793.2 引用类型833.2.1 基本类型与引用类型的区别843.2.2 用new关键字创建对象853.3 变量的作用域873.3.1 静态变量和实例变量的生命周期88 3.3.2 局部变量的生命周期913.3.3 成员变量和局部变量同名923.3.4 将局部变量的作用域最小化933.4 对象的默认引用:this 943.5 参数传递963.6 变量的初始化及默认值983.6.1 成员变量的初始化983.6.2 局部变量的初始化993.7 直接数1003.7.1 直接数的类型1003.7.2 直接数的赋值1013.8 小结1033.9 思考题104第4章操作符1074.1 操作符简介1074.2 整型操作符1084.2.1 一元整型操作符1094.2.2 二元整型操作符1104.3 浮点型操作符1154.4 比较操作符和逻辑操作符1164.5 三元操作符“?:”1194.6 字符串连接操作符“+”1194.7 操作符“==”与对象的equals()方法121 4.7.1 操作符“==”1214.7.2 对象的equals()方法1224.8 instanceof 操作符1254.9 变量的赋值和类型转换1274.9.1 基本数据类型转换1284.9.2 引用类型的类型转换1314.10 小结1314.11 思考题134第5章流程控制1375.1 分支语句1385.1.1 if…else语句1385.1.2 switch语句1415.2 循环语句1445.2.1 while语句1455.2.2 do…while语句1465.2.3 for语句1475.2.4 多重循环1505.3 流程跳转语句1515.4 综合例子:八皇后问题1535.5 小结1565.6 思考题157第6章继承1616.1 继承的基本语法1616.2 方法重载(Overload)1636.3 方法覆盖(Override)1656.4 方法覆盖与方法重载的异同1706.5 super关键字1716.6 多态1726.7 继承的利弊和使用原则1776.7.1 继承树的层次不可太多1776.7.2 继承树的上层为抽象层1776.7.3 继承关系最大的弱点:打破封装178 6.7.4 精心设计专门用于被继承的类180 6.7.5 区分对象的属性与继承1816.8 比较组合与继承1836.8.1 组合关系的分解过程对应继承关系的抽象过程184 6.8.2 组合关系的组合过程对应继承关系的扩展过程186 6.9 小结1896.10 思考题190第7章Java语言中的修饰符1957.1 访问控制修饰符1967.2 abstract修饰符1987.3 final修饰符2007.3.1 final类2017.3.2 final方法2017.3.3 final变量2027.4 static修饰符2067.4.1 static变量2067.4.2 static方法2097.4.3 static代码块2127.5 小结2147.6 思考题215第8章接口2198.1 接口的概念和基本特征2208.2 比较抽象类与接口2228.3 与接口相关的设计模式2278.3.1 定制服务模式2278.3.2 适配器模式2318.3.3 默认适配器模式2358.3.4 代理模式2368.3.5 标识类型模式2418.3.6 常量接口模式2428.4 小结2438.5 思考题244第9章异常处理2479.1 Java异常处理机制概述2489.1.1 Java异常处理机制的优点2489.1.2 Java虚拟机的方法调用栈2509.1.3 异常处理对性能的影响2539.2 运用Java异常处理机制2539.2.1 try…catch语句:捕获异常2539.2.2 finally语句:任何情况下都必须执行的代码254 9.2.3 throws子句:声明可能会出现的异常2569.2.4 throw语句:抛出异常2569.2.5 异常处理语句的语法规则2579.2.6 异常流程的运行过程2609.3 Java异常类2649.3.1 运行时异常2669.3.2 受检查异常2669.3.3 区分运行时异常和受检查异常2679.3.4 区分运行时异常和错误2689.4 用户定义异常2689.4.1 异常转译和异常链2699.4.2 处理多样化异常2719.5 异常处理原则2739.5.1 异常只能用于非正常情况2739.5.2 为异常提供说明文档2749.5.3 尽可能地避免异常2759.5.4 保持异常的原子性2769.5.5 避免过于庞大的try代码块2779.5.6 在catch子句中指定具体的异常类型2779.5.7 不要在catch代码块中忽略被捕获的异常2789.6 小结2789.7 思考题279第10章类的生命周期28310.1 Java虚拟机及程序的生命周期28310.2 类的加载、连接和初始化28310.2.1 类的加载28410.2.2 类的验证28510.2.3 类的准备28510.2.4 类的解析28610.2.5 类的初始化28610.2.6 类的初始化的时机28810.3 类加载器29110.3.1 类加载的父亲委托(Parent Delegation)机制293 10.3.2 创建用户自定义的类加载器29410.3.3 URLClassLoader类30010.4 类的卸载30110.5 小结30210.6 思考题303第11章对象的生命周期30511.1 创建对象的方式30511.2 构造方法30811.2.1 重载构造方法30911.2.2 默认构造方法31011.2.3 子类调用父类的构造方法31111.2.4 构造方法的作用域31411.2.5 构造方法的访问级别31511.3 静态工厂方法31611.3.1 单例(singleton)类31711.3.2 枚举类31911.3.3 不可变(immutable)类与可变类32111.3.4 具有实例缓存的不可变类32511.3.5 松耦合的系统接口32711.4 垃圾回收32811.4.1 对象的可触及性32911.4.2 垃圾回收的时间33011.4.3 对象的finalize()方法简介33111.4.4 对象的finalize()方法的特点33111.4.5 比较finalize()方法和finally代码块334 11.5 清除过期的对象引用33411.6 对象的强、软、弱和虚引用33611.7 小结34211.8 思考题342第12章内部类34512.1 内部类的基本语法34512.1.1 实例内部类34612.1.2 静态内部类34912.1.3 局部内部类35112.2 内部类的继承35212.3 子类与父类中的内部类同名35312.4 匿名类35412.5 内部接口及接口中的内部类35712.6 内部类的用途35812.6.1 封装类型35812.6.2 直接访问外部类的成员35812.6.3 回调(CallBack)35912.7 内部类的类文件36112.8 小结36112.9 思考题362第13章多线程36513.1 Java线程的运行机制36513.2 线程的创建和启动36713.2.1 扩展ng.Thread类36713.2.2 实现Runnable接口37213.3 线程的状态转换37313.3.1 新建状态(New)37313.3.2 就绪状态(Runnable)37413.3.3 运行状态(Running)37413.3.4 阻塞状态(Blocked )37413.3.5 死亡状态(Dead)37513.4 线程调度37613.4.1 调整各个线程的优先级37713.4.2 线程睡眠:Thread.sleep()方法379 13.4.3 线程让步:Thead.yield()方法38013.4.4 等待其他线程结束:join() 38113.5 获得当前线程对象的引用38213.6 后台线程38313.7 定时器Timer 38413.8 线程的同步38613.8.1 同步代码块38913.8.2 线程同步的特征39213.8.3 同步与并发39513.8.4 线程安全的类39613.8.5 释放对象的锁39713.8.6 死锁39813.9 线程通信40013.10 中断阻塞40413.11 线程控制40513.11.1 被废弃的suspend()和resume()方法406 13.11.2 被废弃的stop()方法40713.11.3 以编程的方式控制线程40713.12 线程组40913.13 处理线程未捕获的异常41013.14 ThreadLocal类41213.15 小结41413.16 思考题415第14章数组41714.1 数组变量的声明41714.2 创建数组对象41814.3 访问数组的元素和长度41914.4 数组的初始化42014.5 多维数组42114.6 调用数组对象的方法42214.7 把数组作为方法参数或返回值42314.8 数组排序42514.9 数组的二叉查找算法42614.10 哈希表42814.11 数组实用类:Arrays 43214.12 小结43414.13 思考题435第15章Java集合43715.1 Collection和Iterator接口43815.2 Set(集)44015.2.1 Set的一般用法44115.2.2 HashSet类44215.2.3 TreeSet类44415.3 List(列表)44815.3.1 访问列表的元素44815.3.2 为列表排序44915.3.3 ListIterator接口44915.3.4 获得固定长度的List对象45015.3.5 比较Java数组和各种List的性能45115.4 Map(映射)45315.5 HashSet和HashMap的负载因子45515.6 集合的编译时类型检查45615.7 用for循环遍历集合45915.8 集合实用类:Collections 45915.9 历史集合类46215.10 小结46515.11 思考题466第16章Java I/O系统46716.1 输入流和输出流概述46716.2 输入流46916.2.1 字节数组输入流:ByteArrayInputStream类470 16.2.2 文件输入流:FileInputStream类47116.2.3 字符串输入流:StringBufferInputStream类472 16.2.4 管道输入流:PipedInputStream类47316.2.5 顺序输入流:SequenceInputStream类47416.3 过滤输入流:FilterInputStream类47416.3.1 装饰器设计模式47516.3.2 过滤输入流的种类47616.3.3 DataInputStream类47616.3.4 LineNumberInputStream类47816.3.5 BufferedInputStream类47816.3.6 PushbackInputStream类47816.4 输出流47916.4.1 字节数组输出流:ByteArrayOutputStream类479 16.4.2 文件输出流:FileOutputStream类48016.5 过滤输出流:FilterOutputStream类48116.5.1 DataOutputStream类48116.5.2 BufferedOutputStream类48216.5.3 PrintStream类48316.6 Reader/Writer概述48516.7 Reader类48716.7.1 字符数组输入流:CharArrayReader类48816.7.2 字符串输入流:StringReader类48816.7.3 InputStreamReader类48916.7.4 FileReader类49016.7.5 BufferedReader类49016.8 Writer类49016.8.1 字符数组输出流:CharArrayWriter类49116.8.2 OutputStreamWriter类49116.8.3 FileWriter类49416.8.4 BufferedWriter类49416.8.5 PrintWriter类49416.9 标准I/O 49516.9.1 重新包装标准输入和输出49516.9.2 标准I/O重定向49616.10 随机访问文件类:RandomAccessFile 497 16.11 新I/O类库49916.11.1 缓冲器Buffer概述49916.11.2 通道Channel概述50016.11.3 字符编码Charset类概述50216.11.4 用FileChannel读写文件50216.11.5 控制缓冲区50316.11.6 字符编码转换50416.11.7 缓冲区视图50516.11.8 文件映射缓冲区:MappedByteBuffer 507 16.11.9 文件加锁50816.12 对象的序列化与反序列化51016.13 File类51516.13.1 查看、创建和删除文件或目录51716.13.2 文件过滤器51916.14 小结52016.15 思考题521第17章图形用户界面52317.1 AWT容器52317.2 布局管理器52517.2.1 FlowLayout流式布局管理器52617.2.2 BorderLayout边界布局管理器52817.2.3 GridLayout网格布局管理器53017.2.4 CardLayout卡片布局管理器53317.2.5 GridBagLayout网格包布局管理器53517.3 事件处理53917.3.1 事件处理的软件实现54017.3.2 事件源﹑事件和监听器的类层次和关系545 17.4 AWT绘图55017.5 Graphics类55217.6 小结55417.7 思考题554第18章Swing组件55718.1 Swing组件的基本用法55818.2 边框55918.3 按钮组件56118.4 文本框56418.5 文本区域与滚动面板56618.6 复选框与单选按钮56818.7 下拉列表57018.8 列表框57118.9 页签面板57318.10 菜单57418.11 对话框57918.12 文件对话框58118.13 消息框58418.14 绘图58518.15 JApplet 58818.16 在JApplet中播放声音59418.17 BoxLayout布局管理器59618.18 设置Swing界面的外观和感觉599 18.19 小结60118.20 思考题602第19章Java常用类60319.1 Object类60319.2 String类和StringBuffer类60419.2.1 String类60419.2.2 "hello"与new String("hello")的区别60719.2.3 StringBuffer类60819.2.4 比较String类与StringBuffer类60919.2.5 正则表达式61119.3 包装类61219.3.1 包装类的构造方法61319.3.2 包装类的常用方法61419.3.3 包装类的特点61519.4 Math类61619.5 Random类61719.6 处理日期的类61719.6.1 Date类61819.6.2 DateFormat类61819.6.3 Calendar类62019.7 BigDecimal类62119.8 小结62419.9 思考题624参考文献626。
Java面向对象编程概念解析章节一:面向对象编程基础概念在介绍Java面向对象编程的概念之前,我们先来了解一些基础概念。
面向对象编程(Object-Oriented Programming,OOP)是一种程序设计思想,它将对象作为程序的基本单元,通过对象之间的相互调用和协作来完成任务。
在面向对象编程中,一切皆对象,每个对象都有自己的属性和行为,对象之间通过消息传递来交互。
章节二:Java面向对象编程的特点与优势Java作为一种面向对象编程语言,具有以下特点与优势:1. 封装性:Java支持封装机制,可以将属性和方法封装在一个类中,只对外暴露必要的接口,提高代码的可维护性和安全性。
2. 继承性:通过继承机制,Java允许子类继承父类的属性和方法,实现代码复用和层次结构的构建。
3. 多态性:Java中的多态性允许一个类的实例在不同的情况下表现出不同的行为,提高了代码的灵活性和可扩展性。
4. 抽象性:Java通过抽象类和接口来实现抽象性,可以定义一些具有一定行为和属性的抽象类或接口,让子类去实现具体的功能。
章节三:类与对象在Java中,类是面向对象编程的基础,它是一种自定义的数据类型,用于实例化(创建)对象。
类定义了对象的属性和方法,是对象的模板。
而对象则是类的实例,每个对象都有自己的属性和方法。
在Java中,通过关键字"new"来创建一个对象,并通过点操作符"."访问对象的属性和方法。
类和对象的关系可以类比于蓝图和房子的关系,类就是蓝图,而对象就是根据蓝图建造的房子。
章节四:封装与访问控制封装是面向对象编程中的一项重要原则,通过封装可以将类的实现细节隐藏起来,只对外提供必要的接口。
在Java中,通过访问控制修饰符(public、protected、private)来实现封装性。
public修饰符表示该属性或方法对外部可见;protected修饰符表示该属性或方法对同一个包内的类以及继承该类的类可见;private修饰符表示该属性或方法只对本类可见。
编号GP0001类别BLOG 题目博客技术要点功能:(1)站点主页:1、登陆、注册2、本站功能介绍3、站内公告4、排行榜5、站内搜索:(2)个人主页:1、我的主页2、公告信息3、我的博客4、我的相册5、我的好友6、我的收藏7、控制面版:具有浏览我的主页、评论列表、栏目设置、样式选择、样式修改、自定义公告、内容管理、基本信息设置、统计访问次数等功能。
开发工具与技术:Tomcat、JDK、MySql、MyEclipse、struts2、hibernate3、JSP参考文献[1]孙卫琴著.Java面向对象编程[M].北京:电子工业出版社,2006年.[2]朱喜福著.Java 程序设计[M].北京:清华大学出版社,2004年.[3] 张锋科技,陈刚著.Eclipse从入门到精通(Java开发利器).北京:清华大学出版社,2005.6[4]李建军,高明著.JSP编程技术与应用[M].北京:高等教育出版社,2003年.[5]徐子贵,徐小红著.Java面向对象数据库教程[M].北京:电子工业出版社,2004年.[6]李建军,高明著.JSP编程技术与应用[M].北京:高等教育出版社,2003年.[7]孙卫琴.Tomcat与Java Web开发技术详解.北京:电子工业出版社,2003.11[8]孙卫琴著.精通Hibernate3.0[M].北京:电子工业出版社,2005年.[9]孙卫琴著.精通struts基于mvc的Java Web设计与开发[M].北京:电子工业出版编号GP0002类别OA题目公司OA管理系统技术要点1、 建立内部的通信平台。
建立单位内部的邮件系统,使单位内部的通信和信息交流快捷通畅。
2、 建立信息发布的平台。
在单位内部建立一个有效的信息发布和交流的场所,例如电子公告、电子论坛、电子刊物,使内部的规章制度、新闻简报、技术交流、公告事项等能够在企业内部员工之间得到广泛的传播,使员工能够了解企业的发展动态。
《JAVA面向对象编程》[PDF] 孙卫琴著【目录】第1章面向对象开发方法概述 11.1 结构化的软件开发方法简介31.2 面向对象的软件开发方法简介51.2.1 对象模型61.2.2 UML:可视化建模语言61.2.3 Rational Rose:可视化建模工具71.3 面向对象开发中的核心思想和概念71.3.1 问题领域、对象、属性、状态、行为、方法、实现7 1.3.2 类、类型91.3.3 消息、服务101.3.4 接口111.3.5 封装、透明121.3.6 抽象161.3.7 继承、扩展、覆盖171.3.8 组合191.3.9 多态、动态绑定221.4 UML语言简介241.4.1 用例图241.4.2 类框图251.4.3 时序图261.4.4 协作图271.4.5 状态转换图271.4.6 组件图281.4.7 部署图291.5 类之间的关系291.5.1 关联(Association)291.5.2 依赖(Dependency)311.5.3 聚集(Aggregation)311.5.4 泛化(Generalization)321.5.5 实现(Realization)321.5.6 区分依赖、关联和聚集关系331.6 实现Panel系统351.6.1 扩展Panel系统371.6.2 用配置文件进一步提高Panel系统的可维护性39 1.6.3 运行Panel系统401.7 小结411.8 思考题42第2章第一个Java应用432.1 创建Java源文件432.1.1 Java源文件结构442.1.2 包声明语句452.1.3 包引入语句472.1.4 方法的声明492.1.5 程序入口main()方法的声明502.1.6 给main()方法传递参数512.1.7 注释语句512.1.8 关键字512.1.9 标识符522.1.10 编程规范522.2 用JDK管理Java应用532.2.1 JDK简介542.2.2 编译Java源文件552.2.3 运行Java程序562.2.4 给Java应用打包592.3 JavaDoc文档602.3.1 JavaDoc标记622.3.2 javadoc命令的用法672.4 Java虚拟机的运行时数据区692.5 小结712.6 思考题71第3章数据类型和变量733.1 基本数据类型743.1.1 boolean类型743.1.2 byte、short、int和long类型753.1.3 char类型与字符编码763.1.4 float和double类型793.2 引用类型833.2.1 基本类型与引用类型的区别843.2.2 用new关键字创建对象853.3 变量的作用域873.3.1 静态变量和实例变量的生命周期88 3.3.2 局部变量的生命周期913.3.3 成员变量和局部变量同名923.3.4 将局部变量的作用域最小化933.4 对象的默认引用:this 943.5 参数传递963.6 变量的初始化及默认值983.6.1 成员变量的初始化983.6.2 局部变量的初始化993.7 直接数1003.7.1 直接数的类型1003.7.2 直接数的赋值1013.8 小结1033.9 思考题104第4章操作符1074.1 操作符简介1074.2 整型操作符1084.2.1 一元整型操作符1094.2.2 二元整型操作符1104.3 浮点型操作符1154.4 比较操作符和逻辑操作符1164.5 三元操作符“?:”1194.6 字符串连接操作符“+”1194.7 操作符“==”与对象的equals()方法121 4.7.1 操作符“==”1214.7.2 对象的equals()方法1224.8 instanceof 操作符1254.9 变量的赋值和类型转换1274.9.1 基本数据类型转换1284.9.2 引用类型的类型转换1314.10 小结1314.11 思考题134第5章流程控制1375.1 分支语句1385.1.1 if…else语句1385.1.2 switch语句1415.2 循环语句1445.2.1 while语句1455.2.2 do…while语句1465.2.3 for语句1475.2.4 多重循环1505.3 流程跳转语句1515.4 综合例子:八皇后问题1535.5 小结1565.6 思考题157第6章继承1616.1 继承的基本语法1616.2 方法重载(Overload)1636.3 方法覆盖(Override)1656.4 方法覆盖与方法重载的异同1706.5 super关键字1716.6 多态1726.7 继承的利弊和使用原则1776.7.1 继承树的层次不可太多1776.7.2 继承树的上层为抽象层1776.7.3 继承关系最大的弱点:打破封装178 6.7.4 精心设计专门用于被继承的类180 6.7.5 区分对象的属性与继承1816.8 比较组合与继承1836.8.1 组合关系的分解过程对应继承关系的抽象过程184 6.8.2 组合关系的组合过程对应继承关系的扩展过程186 6.9 小结1896.10 思考题190第7章Java语言中的修饰符1957.1 访问控制修饰符1967.2 abstract修饰符1987.3 final修饰符2007.3.1 final类2017.3.2 final方法2017.3.3 final变量2027.4 static修饰符2067.4.1 static变量2067.4.2 static方法2097.4.3 static代码块2127.5 小结2147.6 思考题215第8章接口2198.1 接口的概念和基本特征2208.2 比较抽象类与接口2228.3 与接口相关的设计模式2278.3.1 定制服务模式2278.3.2 适配器模式2318.3.3 默认适配器模式2358.3.4 代理模式2368.3.5 标识类型模式2418.3.6 常量接口模式2428.4 小结2438.5 思考题244第9章异常处理2479.1 Java异常处理机制概述2489.1.1 Java异常处理机制的优点2489.1.2 Java虚拟机的方法调用栈2509.1.3 异常处理对性能的影响2539.2 运用Java异常处理机制2539.2.1 try…catch语句:捕获异常2539.2.2 finally语句:任何情况下都必须执行的代码254 9.2.3 throws子句:声明可能会出现的异常2569.2.4 throw语句:抛出异常2569.2.5 异常处理语句的语法规则2579.2.6 异常流程的运行过程2609.3 Java异常类2649.3.1 运行时异常2669.3.2 受检查异常2669.3.3 区分运行时异常和受检查异常2679.3.4 区分运行时异常和错误2689.4 用户定义异常2689.4.1 异常转译和异常链2699.4.2 处理多样化异常2719.5 异常处理原则2739.5.1 异常只能用于非正常情况2739.5.2 为异常提供说明文档2749.5.3 尽可能地避免异常2759.5.4 保持异常的原子性2769.5.5 避免过于庞大的try代码块2779.5.6 在catch子句中指定具体的异常类型2779.5.7 不要在catch代码块中忽略被捕获的异常2789.6 小结2789.7 思考题279第10章类的生命周期28310.1 Java虚拟机及程序的生命周期28310.2 类的加载、连接和初始化28310.2.1 类的加载28410.2.2 类的验证28510.2.3 类的准备28510.2.4 类的解析28610.2.5 类的初始化28610.2.6 类的初始化的时机28810.3 类加载器29110.3.1 类加载的父亲委托(Parent Delegation)机制293 10.3.2 创建用户自定义的类加载器29410.3.3 URLClassLoader类30010.4 类的卸载30110.5 小结30210.6 思考题303第11章对象的生命周期30511.1 创建对象的方式30511.2 构造方法30811.2.1 重载构造方法30911.2.2 默认构造方法31011.2.3 子类调用父类的构造方法31111.2.4 构造方法的作用域31411.2.5 构造方法的访问级别31511.3 静态工厂方法31611.3.1 单例(singleton)类31711.3.2 枚举类31911.3.3 不可变(immutable)类与可变类32111.3.4 具有实例缓存的不可变类32511.3.5 松耦合的系统接口32711.4 垃圾回收32811.4.1 对象的可触及性32911.4.2 垃圾回收的时间33011.4.3 对象的finalize()方法简介33111.4.4 对象的finalize()方法的特点33111.4.5 比较finalize()方法和finally代码块334 11.5 清除过期的对象引用33411.6 对象的强、软、弱和虚引用33611.7 小结34211.8 思考题342第12章内部类34512.1 内部类的基本语法34512.1.1 实例内部类34612.1.2 静态内部类34912.1.3 局部内部类35112.2 内部类的继承35212.3 子类与父类中的内部类同名35312.4 匿名类35412.5 内部接口及接口中的内部类35712.6 内部类的用途35812.6.1 封装类型35812.6.2 直接访问外部类的成员35812.6.3 回调(CallBack)35912.7 内部类的类文件36112.8 小结36112.9 思考题362第13章多线程36513.1 Java线程的运行机制36513.2 线程的创建和启动36713.2.1 扩展ng.Thread类36713.2.2 实现Runnable接口37213.3 线程的状态转换37313.3.1 新建状态(New)37313.3.2 就绪状态(Runnable)37413.3.3 运行状态(Running)37413.3.4 阻塞状态(Blocked )37413.3.5 死亡状态(Dead)37513.4 线程调度37613.4.1 调整各个线程的优先级37713.4.2 线程睡眠:Thread.sleep()方法379 13.4.3 线程让步:Thead.yield()方法38013.4.4 等待其他线程结束:join() 38113.5 获得当前线程对象的引用38213.6 后台线程38313.7 定时器Timer 38413.8 线程的同步38613.8.1 同步代码块38913.8.2 线程同步的特征39213.8.3 同步与并发39513.8.4 线程安全的类39613.8.5 释放对象的锁39713.8.6 死锁39813.9 线程通信40013.10 中断阻塞40413.11 线程控制40513.11.1 被废弃的suspend()和resume()方法406 13.11.2 被废弃的stop()方法40713.11.3 以编程的方式控制线程40713.12 线程组40913.13 处理线程未捕获的异常41013.14 ThreadLocal类41213.15 小结41413.16 思考题415第14章数组41714.1 数组变量的声明41714.2 创建数组对象41814.3 访问数组的元素和长度41914.4 数组的初始化42014.5 多维数组42114.6 调用数组对象的方法42214.7 把数组作为方法参数或返回值42314.8 数组排序42514.9 数组的二叉查找算法42614.10 哈希表42814.11 数组实用类:Arrays 43214.12 小结43414.13 思考题435第15章Java集合43715.1 Collection和Iterator接口43815.2 Set(集)44015.2.1 Set的一般用法44115.2.2 HashSet类44215.2.3 TreeSet类44415.3 List(列表)44815.3.1 访问列表的元素44815.3.2 为列表排序44915.3.3 ListIterator接口44915.3.4 获得固定长度的List对象45015.3.5 比较Java数组和各种List的性能45115.4 Map(映射)45315.5 HashSet和HashMap的负载因子45515.6 集合的编译时类型检查45615.7 用for循环遍历集合45915.8 集合实用类:Collections 45915.9 历史集合类46215.10 小结46515.11 思考题466第16章Java I/O系统46716.1 输入流和输出流概述46716.2 输入流46916.2.1 字节数组输入流:ByteArrayInputStream类470 16.2.2 文件输入流:FileInputStream类47116.2.3 字符串输入流:StringBufferInputStream类472 16.2.4 管道输入流:PipedInputStream类47316.2.5 顺序输入流:SequenceInputStream类47416.3 过滤输入流:FilterInputStream类47416.3.1 装饰器设计模式47516.3.2 过滤输入流的种类47616.3.3 DataInputStream类47616.3.4 LineNumberInputStream类47816.3.5 BufferedInputStream类47816.3.6 PushbackInputStream类47816.4 输出流47916.4.1 字节数组输出流:ByteArrayOutputStream类479 16.4.2 文件输出流:FileOutputStream类48016.5 过滤输出流:FilterOutputStream类48116.5.1 DataOutputStream类48116.5.2 BufferedOutputStream类48216.5.3 PrintStream类48316.6 Reader/Writer概述48516.7 Reader类48716.7.1 字符数组输入流:CharArrayReader类48816.7.2 字符串输入流:StringReader类48816.7.3 InputStreamReader类48916.7.4 FileReader类49016.7.5 BufferedReader类49016.8 Writer类49016.8.1 字符数组输出流:CharArrayWriter类49116.8.2 OutputStreamWriter类49116.8.3 FileWriter类49416.8.4 BufferedWriter类49416.8.5 PrintWriter类49416.9 标准I/O 49516.9.1 重新包装标准输入和输出49516.9.2 标准I/O重定向49616.10 随机访问文件类:RandomAccessFile 497 16.11 新I/O类库49916.11.1 缓冲器Buffer概述49916.11.2 通道Channel概述50016.11.3 字符编码Charset类概述50216.11.4 用FileChannel读写文件50216.11.5 控制缓冲区50316.11.6 字符编码转换50416.11.7 缓冲区视图50516.11.8 文件映射缓冲区:MappedByteBuffer 507 16.11.9 文件加锁50816.12 对象的序列化与反序列化51016.13 File类51516.13.1 查看、创建和删除文件或目录51716.13.2 文件过滤器51916.14 小结52016.15 思考题521第17章图形用户界面52317.1 AWT容器52317.2 布局管理器52517.2.1 FlowLayout流式布局管理器52617.2.2 BorderLayout边界布局管理器52817.2.3 GridLayout网格布局管理器53017.2.4 CardLayout卡片布局管理器53317.2.5 GridBagLayout网格包布局管理器53517.3 事件处理53917.3.1 事件处理的软件实现54017.3.2 事件源﹑事件和监听器的类层次和关系545 17.4 AWT绘图55017.5 Graphics类55217.6 小结55417.7 思考题554第18章Swing组件55718.1 Swing组件的基本用法55818.2 边框55918.3 按钮组件56118.4 文本框56418.5 文本区域与滚动面板56618.6 复选框与单选按钮56818.7 下拉列表57018.8 列表框57118.9 页签面板57318.10 菜单57418.11 对话框57918.12 文件对话框58118.13 消息框58418.14 绘图58518.15 JApplet 58818.16 在JApplet中播放声音59418.17 BoxLayout布局管理器59618.18 设置Swing界面的外观和感觉599 18.19 小结60118.20 思考题602第19章Java常用类60319.1 Object类60319.2 String类和StringBuffer类60419.2.1 String类60419.2.2 "hello"与new String("hello")的区别60719.2.3 StringBuffer类60819.2.4 比较String类与StringBuffer类60919.2.5 正则表达式61119.3 包装类61219.3.1 包装类的构造方法61319.3.2 包装类的常用方法61419.3.3 包装类的特点61519.4 Math类61619.5 Random类61719.6 处理日期的类61719.6.1 Date类61819.6.2 DateFormat类61819.6.3 Calendar类62019.7 BigDecimal类62119.8 小结62419.9 思考题624参考文献626。