出版时间:2010-4 出版社:耿祥义、 张跃平 人民邮电出版社 (2010-04出版) 作者:耿祥义,张跃平 著 页数:338
前言
Java是一种纯面向对象的程序设计语言,具有跨平台、分布性、高性能、可移植等优点,是目前被广泛使用的编程语言之一,很多新的计算机技术领域也都涉及Java语言。本书在内容和语言组织上注重Java语言的面向对象特性,强调面向对象的程序设计思想,在实例上注重实用性和启发性,在内容的深度和广度方面都给予了深入考虑,在类、对象、继承、接口等重要的基础知识上侧重深度,而在实用类、输入店俞出流、Java网络技术、JDBC数据库操作等实用技术方面的讲解上侧重广度。通过本书的学习,读者可以掌握Java面向对象编程的思想和Java编程中的一些重要技术。本书语言通俗易懂,例子生动实用,并且每一章的后面还提供了习题,方便老师和同学及时考核学习效果。全书共分16章。第1章主要介绍了Java产生的背景和Java平台,读者可以了解到Java是怎样做到“一次写成,处处运行”的。第2章通过学习一个简单的对象,初步了解对象的结构,并讲解了简单数据类型。第3章主要介绍了Java运算符和控制语句。第4章、第5章和第6章是本书的重点内容,讲述了类与对象、子类与继承、接口与多态等内容。第7章和第8章是对第4章、第5章知识的总结升华。第7章讲解了数组与枚举,特别讲解了和数组相关的一些实用技术;第8章讲解了内部类和匿名类,特别强调了使用内部类的原则以及学习自定义异常的重要性。第9章讲述了常用的实用类,包括字符串、日期、正则表达式、模式匹配、数学计算等实用类,特别讲解了怎样使用Scaner类解析字符串。第10章讲解Java中的输入/输出流技术,这部分特别介绍了怎样使用输入/输出流来克隆对象,Java的文件锁技术以及使用Scanet解析文件等重要内容。第11章主要讲解Java怎样使用JDBC操作数据库,讲解了预处理、事务处理、批处理等重要技术。第12章讲解泛型和集合框架,强调如何使用集合框架提供的类来有效、合理地组织程序中的数据。第13章讲述了多线程技术,通过许多有启发的例子来帮助读者理解多线程编程。第14章讲解Java在网络编程中的一些重要技术,涉及URL、Socket、InetAddrees、DatagramPacket等重要的类,而且特别讲解了Java远程调用(RMI)。第15章是基于Java Swing的GUI图形用户界面设计,讲解了常用的组件和容器,特别详细讲解了事件处理。第16章主要讲解JavaApplet的运行原理以及在网络中的角色。在学习本书之前,读者最好具有c语言基础。掌握一门语言最好的方式就是实践,本书的着眼点是将基础的理论知识讲解和实践应用相结合,使读者在理解面向对象思想的基础上,快速掌握Java编程技术。
内容概要
《Java程序设计实用教程》适合作为高等院校计算机相关专业“Java语言程序设计”以及“面向对象语言”课程的教材。Java语言具有面向对象、与平台无关、安全、稳定、多线程等优良特性,是目前软件设计中极为强大的编程语言。《Java 程序设计实用教程》注重结合实例,循序渐进地向读者介绍了Java语言的重要知识点,特别强调Java面向对象编程的思想。全书分为16章,分别讲解了简单数据类型、运算符、表达式和语句、类与对象、子类与继承、接口与多态、数组与枚举、内部类与异常类、常用实用类、Java输入输出流、JDBC数据库操作、泛型与集合框架、Java多线程机制、Java网络基础、图形用户界面设计、Java Applet程序等内容。
作者简介
耿祥义,1995年中国科学技术大学博士毕业,获理学博士学位。1997年从中山大学博士后流动站出站,现任大连交通大学教授。有多年讲授Java语言的经验,编写教材深受读者喜爱。
书籍目录
第1章 初识Java 11.1 Java诞生的原因 21.2 Java的地位 41.2.1 网络地位 41.2.2 语言地位 41.2.3 需求地位 41.3 安装JDK 41.3.1 3种平台简介 41.3.2 安装Java SE平台 51.4 Java程序的开发步骤 71.5 一个简单的Java应用程序 81.5.1 编写源文件 81.5.2 编译 91.5.3 运行 101.6 Java的语言特点 101.6.1 简单 101.6.2 面向对象 111.6.3 多线程 111.6.4 安全 111.6.5 动态 11习题1 11第2章 初识对象和简单数据类型 132.1 问题的提出 132.2 简单的矩形类 142.3 使用矩形类创建对象 152.3.1 用类声明对象 152.3.2 为对象分配变量 152.3.3 使用对象 162.4 在Java应用程序中使用矩形对象 162.5 Java应用程序的基本结构 172.6 一个源文件中编写多个类 192.7 标识符与关键字 202.7.1 标识符 202.7.2 关键字 202.8 简单数据类型 202.8.1 逻辑类型 212.8.2 整数类型 212.8.3 字符类型 222.8.4 浮点类型 232.9 简单数据类型的级别与数据转换 242.10 从命令行窗口输入、输出数据 252.10.1 输入基本型数据 252.10.2 输出基本型数据 262.11 编成风格 272.11.1 Allmans风格 272.11.2 Kernighan风格 272.11.3 注释 28习题2 28第3章 运算符、表达式和语句 303.1 运算符与表达式 303.1.1 算术运算符与算术表达式 303.1.2 自增,自减运算符 303.1.3 算术混合运算的精度 313.1.4 关系运算符与关系表达式 313.1.5 逻辑运算符与逻辑表达式 313.1.6 赋值运算符与赋值表达式 323.1.7 位运算符 323.1.8 instanceof运算符 333.1.9 运算符综述 333.2 语句概述 343.3 if条件分支语句 343.3.1 if语句 343.3.2 if-else语句 353.3.3 if-else if-else语句 353.4 switch开关语句 373.5 循环语句 393.5.1 for循环语句 393.5.2 while循环 403.5.3 do-while循环 403.6 break和continue语句 41习题3 42第4章 类与对象 444.1 从抽象到类 444.2 类 454.2.1 类声明 454.2.2 类体 454.2.3 成员变量 464.2.4 方法 474.2.5 需要注意的问题 494.2.6 类的UML类图 494.3 构造方法与对象的创建 494.3.1 构造方法 504.3.2 创建对象 504.3.3 使用对象 524.3.4 对象的引用和实体 534.4 参数传值 554.4.1 传值机制 554.4.2 基本数据类型参数的传值 554.4.3 引用类型参数的传值 564.4.4 可变参数 584.5 有理数的类封装 594.6 对象的组合 624.6.1 圆锥体 624.6.2 关联关系和依赖关系的UML图 634.7 实例成员与类成员 644.7.1 实例变量和类变量的声明 644.7.2 实例变量和类变量的区别 644.7.3 实例方法和类方法的定义 664.7.4 实例方法和类方法的区别 664.8 方法重载与多态 674.9 this关键字 694.10 包 694.10.1 包语句 704.10.2 有包名的类的存储目录 704.10.3 运行有包名的主类 704.11 import语句 724.11.1 引入类库中的类 724.11.2 引入自定义包中的类 734.11.3 使用无包名的类 754.11.4 避免类名混淆 754.12 访问权限 764.12.1 何谓访问权限 764.12.2 私有变量和私有方法 764.12.3 共有变量和共有方法 774.12.4 友好变量和友好方法 784.12.5 受保护的成员变量和方法 784.12.6 public类与友好类 794.13 基本类型的类包装 794.13.1 Double和Float类 794.13.2 Byte、Short、Integer、Long类 804.13.3 Character类 804.14 反编译和文档生成器 804.14.1 javap反编译 804.14.2 javadoc制作文档 80习题4 81第5章 子类与继承 835.1 子类与父类 835.2 子类的继承性 845.2.1 子类和父类在同一包中的继承性 845.2.2 子类和父类不在同一包中的继承性 865.2.3 protected的进一步说明 865.2.4 继承关系的UML图 865.2.5 关于instanceof运算符 865.3 子类对象的特点 875.4 成员变量的隐藏和方法重写 885.4.1 成员变量的隐藏 885.4.2 方法重写 895.5 super关键字 945.5.1 用super操作被隐藏的成员变量和方法 945.5.2 使用super调用父类的构造方法 955.6 final关键字 975.6.1 final类 975.6.2 final方法 975.6.3 常量 975.7 对象的上转型对象 985.8 继承与多态 1005.9 abstract类和abstract方法 1015.10 面向抽象编程 1025.11 开-闭原则 104习题5 107第6章 接口与多态 1096.1 接口 1096.1.1 接口的声明与使用 1096.1.2 理解接口 1126.1.3 接口的UML图 1136.2 接口回调 1146.2.1 接口变量与回调机制 1146.2.2 接口的多态性 1156.2.3 abstract类与接口的比较 1166.3 面向接口编程 116习题6 119第7章 数组与枚举 1217.1 创建数组 1217.1.1 声明数组 1217.1.2 为数组分配元素 1227.1.3 数组元素的使用 1237.1.4 length的使用 1237.1.5 数组的初始化 1247.1.6 数组的引用 1247.2 遍历数组 1257.2.1 基于循环语句的遍历 1257.2.2 使用toString()方法遍历数组 1267.3 复制数组 1277.3.1 arraycopy方法 1277.3.2 copyOf和copyOfRange()方法 1287.4 排序与二分查找 1297.5 枚举 1307.5.1 枚举类型的定义 1307.5.2 枚举变量 1307.5.3 枚举类型与for语句和switch语句 131习题7 132第8章 内部类与异常类 1348.1 内部类 1348.2 匿名类 1358.2.1 和子类有关的匿名类 1358.2.2 和接口有关的匿名类 1378.3 异常类 1388.3.1 try~catch语句 1388.3.2 自定义异常类 1398.4 断言 141习题8 142第9章 常用实用类 1449.1 String类 1449.1.1 构造字符串对象 1449.1.2 String 类的常用方法 1459.1.3 字符串与基本数据的相互转化 1499.1.4 对象的字符串表示 1509.1.5 字符串与字符、字节数组 1519.1.6 正则表达式及字符串的替换与分解 1539.2 StringBuffer类 1579.2.1 StringBuffer对象的创建 1579.2.2 StringBuffer类的常用方法 1589.3 StringTokenizer类 1599.4 Date类 1609.4.1 构造Date对象 1609.4.2 日期格式化 1619.5 Calendar类 1639.6 Math类和BigInteger类 1659.6.1 Math类 1659.6.2 BigInteger类 1669.7 DecimalFormat类 1679.7.1 格式化数字 1679.7.2 将格式化字符串转化为数字 1689.8 Pattern类与Match类 1699.8.1 模式对象 1709.8.2 匹配对象 1709.9 Scanner类 1719.10 System类 173习题9 174第10章 输入、输出流 17610.1 File类 17710.1.1 文件的属性 17710.1.2 目录 17810.1.3 文件的创建与删除 17910.1.4 运行可执行文件 17910.2 字节流与字符流 18010.2.1 InputStream类与OutputSream类 18010.2.2 Reader类与Writer类 18110.2.3 关闭流 18110.3 文件字节流 18110.3.1 文件字节输入流 18210.3.2 文件字节输出流 18310.4 文件字符流 18310.5 缓冲流 18410.6 随机流 18610.7 数组流 18910.8 数据流 19010.9 对象流 19310.10 序列化与对象克隆 19510.11 文件锁 19610.12 使用Scanner解析文件 19710.13 使用Console流读取密码 199习题10 200第11章 JDBC数据库操作 20211.1 Microsoft Access数据库管理系统 20211.1.1 建立数据库 20311.1.2 创建表 20311.2 JDBC 20411.3 连接数据库 20411.3.1 连接方式的选择 20411.3.2 建立JDBC-ODBC桥接器 20511.3.3 ODBC数据源 20511.3.4 建立连接 20611.4 查询操作 20811.4.1 顺序查询 20911.4.2 控制游标 21111.4.3 条件查询 21311.4.4 排序查询 21311.4.5 模糊查询 21411.5 更新、添加与删除操作 21511.6 使用预处理语句 21611.6.1 预处理语句优点 21611.6.2 使用通配符 21811.7 事务 22111.7.1 事务及处理 22111.7.2 JDBC事务处理步骤 22111.8 批处理 22211.9 CachedRowSetImpl类 223习题11 226第12章 泛型与集合框架 22712.1 泛型 22712.1.1 泛型类 22812.1.2 泛型类声明对象 22812.1.3 泛型接口 22912.1.4 泛型的目的 23012.2 链表 23012.2.1 LinkedListE泛型类 23012.2.2 常用方法 23112.2.3 遍历链表 23112.2.4 排序与查找 23312.2.5 洗牌与旋转 23512.3 堆栈 23712.4 散列映射 23812.4.1 HashMapK,V泛型类 23812.4.2 常用方法 23912.4.3 遍历散列映射 23912.4.4 基于散列映射的查询 23912.5 树集 24112.5.1 TreeSetE泛型类 24112.5.2 节点的大小关系 24112.5.3 TreeSet类的常用方法 24112.6 树映射 24312.7 自动装箱与拆箱 244习题12 245第13章 Java多线程机制 24613.1 进程与线程 24613.1.1 操作系统与进程 24613.1.2 进程与线程 24713.2 Java中的线程 24713.2.1 Java的多线程机制 24713.2.2 线程的状态与生命周期 24813.2.3 线程调度与优先级 25113.3 Thread的子类创建线程 25113.4 使用Runnable接口 25313.4.1 Runnable接口与目标对象 25313.4.2 关于run方法启动的次数 25413.4.3 在线程中启动其他线程 25513.5 线程的常用方法 25613.6 线程同步 25913.6.1 什么是线程同步 25913.6.2 通过同步避免切换的影响 26113.7 在同步方法中使用wait()、notify()和notifyAll()方法 26313.8 线程联合 264习题13 265第14章 Java网络编程 26814.1 URL类 26814.1.1 URL的构造方法 26914.1.2 读取URL中的资源 26914.2 InetAdress类 27014.2.1 地址的表示 27014.2.2 获取地址 27114.3 套接字 27114.3.1 套接字 27114.3.2 客户端套接字 27214.3.3 ServerSocket对象与服务器端套接字 27214.3.4 使用多线程技术 27514.4 UDP数据包 27814.4.1 发送数据包 27914.4.2 接收数据包 27914.5 广播数据包 28214.6 Java远程调用 28414.6.1 远程对象及其代理 28514.6.2 RMI的设计细节 285习题14 288第15章 图形用户界面设计 28915.1 Java Swing概述 28915.2 窗口 29015.2.1 JFrame常用方法 29115.2.2 菜单条、菜单、菜单项 29215.3 常用组件与布局 29315.3.1 常用组件 29315.3.2 常用容器 29515.3.3 常用布局 29615.4 处理事件 30115.4.1 事件处理模式 30115.4.2 ActionEvent事件 30215.4.3 ItemEvent事件 30615.4.4 DocumentEvent事件 30815.4.5 MouseEvent事件 31015.4.6 焦点事件 31415.4.7 键盘事件 31415.4.8 匿名类实例或窗口做监视器 31715.4.9 事件总结 31915.5 使用MVC结构 31915.6 对话框 32215.6.1 消息对话框 32215.6.2 输入对话框 32315.6.3 确认对话框 32515.6.4 颜色对话框 32615.6.5 文件对话框 32715.6.6 自定义对话框 33015.7 发布GUI程序 331习题15 332第16章 Java Applet程序 33316.1 Java Applet的结构 33316.2 Java Applet的运行原理 33416.3 在Java Applet中播放声音 33616.4 网页传值 338习题16 338
章节摘录
插图:在Java诞生之前已经出现了许多优秀的编程语言,如所熟悉的C语言和C++语言等,那么是什么原因导致Java语言的诞生呢?Java语言相对于其他语言,如C语言和C++语言,到底有着怎样的特殊优势呢?Java语言相对于其他语言的最大优势就是所谓的平台无关性,即跨平台性,这也是Java最初风靡全球的主要原因。以下通过讲解平台与机器指令,以及程序的编译、执行来理解Java的平台无关性。1.平台与机器指令无论哪种编程语言编写的应用程序都需要经过操作系统和处理器来完成程序的运行,因此这里所指的平台是由操作系统(OS)和处理器(CPU)所构成。与平台无关是指软件的运行不因操作系统、处理器的变化导致发生无法运行或出现运行错误。所谓平台的机器指令就是可以被该平台直接识别、执行的一种由0,1组成的序列代码。需要注意的是,相同的CPU和不同的操作系统所形成的平台的机器指令可能是不同的,因此,每种平台都会形成自己独特的机器指令,例如,某个平台可能用8位序列代码1000llll表示一次加法操作,以10100000表示一次减法操作,而另一种平台可能用8位序列代码10101010表示一次加法操作,以10010011表示一次减法操作。2.G/C++程序依赖平台现在,让我们分析一下为何C/C++语言编写的程序可能因为操作系统的变化、处理器升级导致程序出现错误或无法运行。C/C++语言提供的编译器对C/C++源程序进行编译时,将针对当前C/C++源程序所在的特定平台进行编译、连接,然后生成机器指令,即根据当前平台的机器指令生成机器码文件(可执行文件)。这样一来,就无法保证C/C斗_卜编译器所产生的可执行文件在所有的平台上都能被正确地运行,这是因为不同平台可能具有不同的机器指令(见图1.2 )。因此,如果更换了平台,可能需要修改源程序,并针对新的平台重新编译源程序。
编辑推荐
《Java程序设计实用教程》在内容和语言组织上注重Java语言的面向对象特性,强调面向对象的程序设计思想,在实例上注重实用性和启发性,在内容的深度和广度方面都给予了深入考虑,在类、对象、继承、接口等重要的基础知识上侧重深度,而在实用类、输入输出流、Java网络技术、JDBC数据库操作等实用技术方面的讲解上侧重广度。通过《Java程序设计实用教程》的学习,读者可以掌握Java面向对象编程的思想和Java编程中的一些重要技术。内容全面实用,讲解通俗易懂,实例生动有趣。
图书封面
评论、评分、阅读与下载