XIVof Akron),Debbie Masada (Sun Microsystems),Blayne Mayfield (Oklahoma State University),JohnMcGrath(J.P.McGrathConsulting),HughMcGuire(GrandValleyState),ShyamalMitra (Universityof Texas at Austin),Michel Mitri (James Madison University),KenrickMock (University of Alaska Anchorage),Frank Murgolo(California State University, LongBeach),Jun Ni (Universityof Iowa),Benjamin Nystuen (University of Colorado at ColoradoSprings),MaureenOpkins(CAStateUniversity,LongBeach),GavinOsborne(UniversityofSaskatchewan),Kevin Parker (Idaho State University),Dale Parson (Kutztown University),Mark Pendergast (Florida Gulf CoastUniversity),Richard Povinelli (Marquette University),Roger Priebe (University of Texas at Austin), Mary Ann Pumphrey (De Anza Junior College),Pat Roth(SouthernPolytechnic State University),AmrSabry(Indiana University),BenSetzer(KennesawStateUniversity),Carolyn Schauble(ColoradoStateUniversity),David Scuse(UniversityofManitoba),Ashraf Shirani(SanJoseStateUniversity),DanielSpiegel(KutztownUniversity),Joslyn A.Smith(Florida Atlantic University), Lixin Tao (Pace University),RonaldE.Taylor(WrightStateUniversity),Russ Tront(SimonFraserUniversity),DeborahTrytten(University of Oklahoma),Michael Verdicchio(Citadel),Kent Vidrine (GeorgeWashingtonUniversity),BahramZartoshty(California StateUniversityat Northridge)。能够与Pearson出版社一起工作,我感到非常愉快和荣幸。感谢TracyJohnson和她的同事Marcia Horton、YezAlayan、CaroleSnyder、ScottDisanno、Bob Engelhardt、HaseenKhan,感谢他们组织、开展和积极促进本项目。一如既往,感谢我妻子Samantha的爱、支持和鼓励
XIV of Akron), Debbie Masada (Sun Microsystems), Blayne Mayfield (Oklahoma State University), John McGrath (J.P. McGrath Consulting),Hugh McGuire(Grand Valley State), Shyamal Mitra (University of Texas at Austin), Michel Mitri (James Madison University), Kenrick Mock (University of Alaska Anchorage), Frank Murgolo(California State University, Long Beach),Jun Ni (University of Iowa), Benjamin Nystuen (University of Colorado at Colorado Springs), Maureen Opkins (CA State University, Long Beach), Gavin Osborne (University of Saskatchewan), Kevin Parker (Idaho State University), Dale Parson (Kutztown University), Mark Pendergast (Florida Gulf Coast University), Richard Povinelli (Marquette University), Roger Priebe (University of Texas at Austin), Mary Ann Pumphrey (De Anza Junior College), Pat Roth (Southern Polytechnic State University),Amr Sabry(Indiana University), Ben Setzer(Kennesaw State University), Carolyn Schauble (Colorado State University), David Scuse (University of Manitoba), Ashraf Shirani (San Jose State University), Daniel Spiegel (Kutztown University), Joslyn A. Smith(Florida Atlantic University), Lixin Tao (Pace University), Ronald F. Taylor(Wright State University), Russ Tront (Simon Fraser University), Deborah Trytten (University of Oklahoma), Michael Verdicchio(Citadel), Kent Vidrine (George Washington University), Bahrain Zartoshty (California State University at Northridge)。 能够与 Pearson 出版社一起工作,我感到非常愉快和荣幸。感谢 Tracy Johnson 和她的同事 Marcia Horton、YezAlayan、Carole Snyder、Scott Disanno > Bob Engelhardt、Haseen Khan , 感谢他们组织、开展和积极促进本项目。 一如既往,感谢我妻子 Samantha 的爱、支持和鼓励
录Introduction to Java Programming,Comprehension Version,Tenth Edition·191.10.4常见错误出版者的话1.11使用NetBeans开发Java程序.20中文版序20创建Java工程1.11.1译者序*21创建Java类1.11.2前言22编译和运行类1.11.3.·221.12使用Eclipse开发Java程序.第1章计算机、程序和Java概述........122创建Java工程1.12.1.11.1引言24创建Java类1.12.221.2什么是计算机*24编译和运行类.1.12.32中央处理器1.2.1S..25关键术语.31.2.2比特和字节..·25本章小结3内存1.2.3:26测试题4存储设备1.2.4·26编程练习题4输入和输出设备1.2.528基本程序设计第2章5通信设备1.2.6282.1引言61.3编程语言.282.2编写简单的程序..6机器语言1.3.1..312.3从控制台读取输人6汇编语言1.3.2342.4标识符.7高级语言1.3.3342.5变量...81.4操作系统....36赋值语句和赋值表达式2.68控制和监视系统的活动.1.4.1.·372.7命名常量. 81.4.2分配和调配系统资源.··37命名习惯2.8.81.4.3调度操作+38.数值数据类型和操作2.9..91.5Java、万维网以及其他..38数值类型2.9.11.6Java语言规范、API、JDK和IDE10.*39从键盘读取数值2.9.239..11一个简单的Java程序1.72.9.3数值操作符.···1341创建、编译和执行Java程序幕运算2.9.4..1.8*4116程序设计风格和文档数值型直接量1.9元.2.104216正确的注释和注释风格整型直接量2.10.1.1.9.116.42浮点型直接量正确的缩进和空白2.10.2.1.9.2..17.42科学记数法2.10.31.9.3块的风格.··17表达式求值以及操作符优先级·43程序设计错误2.11.1.10......44.17示例学习:显示当前时间..2.12语法错误…1.10.1·4618增强赋值操作符2.13运行时错误1.10.2·47自增和自减操作符182.141.10.3逻辑错误·
出版者的话 中文版序 译者序 前言 第1章计算机、程序和Java概述 . 1.1 引言 1.2 什么是计算机 1.2.1 中央处理器 1.2.2 比特和字节 1.2.3 内存 1.2.4 存储设备 1.2.5 输入和输出设备 1.2.6 通信设备 1.3 编程语言 1.3.1 机器语言 13J2 汇编语言 1.3.3 高级语言 1.4 操作系统 1.4.1 控制和监视系统的活动 . 1.4.2 分配和调配系统资源 1.4.3 调度操作 1.5 Java、万维网以及其他 1.6 Java语言规范' API' JDK和IDE 1.7 — 个简单的Javag序 1.8 创建、编译和执行Jav_序 . 1.9 程序设计风格和文档 1.9.1 正确的注释和注释风格 . 1.9.2 正确的缩进和空白 1.9.3 块的风格 1.10 程序设计错误 1.10.1 语法样误 1.10.2 运行时错误 1.10.3 逻辑错误 I目 录丨 Introduction to Java Programming, Comprehension Version,Tenth Edition I 1.10.4 常见 19 1.11 使用NetBeans开发Java程序 20 1.11.1 创建Java工程 20 1.11.2 创建Java类 21 1.11.3 编译和运行类 22 1.12 使用Eclipse开发Javag序 22 1.12.1 创建Java工程 22 1.12.2 创建Java类 24 1.12.3 编译和运行类 24 关键术语 25 林小结 25 臓题 26 编程练习题 26 第2章基本程序设计 28 2.1 引言 28 2.2 编写简单的程序 28 2.3 从控制台读取檐人 31 2.4 标识符 34 2.5 变量 34 2.6 陚值语句和陚值表达式 36 2.7 命名常量 37 2.8 命名习惯 37 2.9 数值数据类型和操作 38 2.9.1 数值类型 38 2.9.2 从键盘读取教值 39 2.9.3 数值操作符 39 2.9.4 幂运算 41 2.10 数值型直接量 41 2.10.1 整型直接量 42 2.10.2 浮点型直接量 42 2.10.3 科学记數法 42 2.11 表达式求值以及操作符优先级 . 43 2.12 示例学习:显示当前时间 44 2.13 增强賦值操作符 46 2.14 自增和自减操作符 47 1 1 2 2 3 3 4 4 5 6 6 6 7 8 8 8 8 9 0 1 3 6 6 6 7 7 7 8 8
XVI2.15数值类型转换+484.3字符数据类型和操作...1052.16软件开发过程504.3.1Unicode和ASCII码1052.17示例学习:整钱兑零*54..4.3.2特殊字符的转义序列1062.18常见错误和陷564.3.3字符型数据与数值型数据关键术语.58之间的转换107本章小结:584.3.4字符的比较和测试:107测试题594.4String类型..109编程练习题·594.4.1求字符串长度110第3章选择644.4.2从字符串中获取字符+·1104.4.33.1引言..64连接字符串......11..3.2boolean数据类型4.4.4.....64字符串的转换*1113.3if语句664.4.5从控制台读取字符串1123.4·双分支if-e1se语句*684.4.6从控制台读取字符112..3.5嵌套的if语句和多分支if-else4.4.7字符串比较1121语句·.694.4.8获得子字符串-1143.6常见错误和陷阱.714.4.9获取字符串中的字符或者3.7产生随机数..74子串......... 1153.8示例学习:计算身体质量指数764.4.10字符串和数字间的转换1163.9示例学习计算税率.4.5示例学习..77+1173.10逻辑操作符.804.5.1猜测生日T..1183.11示例学习:判定闻年. 83..4.5.2将十六进制数转换为3.12 84示例学习:彩票十进制数::1213.13switch语句·854.5.3使用字符串修改彩票程序…1223.14条件表达式.884.6格式化控制台输出.1233.15操作符的优先级和结合规则89关键术语126调试本章小结3.1690.127..关键术语.91测试题*127本章小结.91编程练习题*127..测试题·92第5章循环133.编程练习题-925.1引言*133第4章数学函数、字符和字符串5.2while循环...134..1004.1引言1005.2.1示例学习:猜数字*1364.2常用数学函数..1015.2.2循环设计策略?1384.2.1三角函数方法..1015.2.3示例学习:多个减法测4.2.2指数函数方法·102试题..1384.2.3取整方法1025.2.4使用标记值控制循环·1404.2.4min、max和abs方法..1025.2.5输入和输出重定向.. 1414.2.5random方法5.3do-while循环103143.-4.2.6元示例学习:计算三角形的5.4for循环144角度1035.5采用哪种循环:147
XVI 2.15 数值类型转换 2.16 软件开发过程 2.17 示例学习:整钱兑零 2.18 常见错误和陷阱 关键概 本章小结 测试题 编程练习题 第3章 选 择 3 . 1 引 言 3.2 boolean数据类型 3.3 if语句 3.4 双分支if - else语句 3.5 嵌套的if语句和多分支if-else 语句 3.6 常见错误和陷阱 3.7 产生随机数 3.8 示例学习:计算身体质量指数 . 3.9 示例学习:计算税率 3.10 逻辑操作符 3.11 示例学习:判定闰年 ' 3.12 示例学习:彩票 3.13 switch语句 3.14 条件表达式 3.15 操作符的优先级和结合规则 . 3.16 调试 关键术语 样小结 臟题 编程练习题 第4章数学函数、宇符和字符串 . . 4 . 1 弓I言 4.2 常用数学函数 4.2.1 三角函数方法 4.2.2 指数函数方法 4.2.3 取整方法 4.2.4 min、max和abs方法 4.2.5 random方法 4.2.6 示例学习:计算三角形的 免良 4.3 字符数据类型和操作 105 4.3.1 Unicode和ASCII码 105 4.3.2 特殊字符的转义序列 106 4.3.3 字符型数据与數值型教据 之间的转换 107 4.3.4 字符的比较和测试 107 4.4 String类型 109 4.4.1 求字符串长度 110 4.4.2 从字符串中获取字符 110 4.4.3 连接字符串 111 4.4.4 字符串的转换 111 4.4.5 从控制台读取字符串 112 4.4.6 从控制台读取字符 112 4.4.7 字符串比较 112 4.4.8 获得子字符串 114 4.4.9 获取字符串中的字符或者 子串 115 4.4.10 字符串和数字间的转换 . 116 4.5 示例学习 117 4.5.1 猜測生日 118 4.5.2 将十六进制数转换为 十进制数 121 4.5.3 使用字符串修改彩票程序 . 122 4.6 格式化控制台输出 123 关键术语 126 本章小结 127 测试题 127 编程练习题 127 第5章 循 环 133 5.1 引言 133 5.2 while循环 134 5.2.1 示例学习:猜数字 136 5.2.2 循环设计策略 138 5.2.3 示例学习:多个减法測 试題 138 5.2.4 使用标记值控制循环 140 5.2.5 输入和输出重定向 141 5.3 do - while循环 143 5.4 for循环 144 5.5 采用哪种循环 147 .48 .50 54 .56 .58 58 .59 .59 64 64 64 • 6 6 . 6 8 .69 • 7 1 .74 76 77 .80 83 84 .85 • 8 8 89 90 91 91 92 ■ 92 100 100 101 101 102 102 102 103 103
XVII嵌套循环:1497.2.2创建数组5.6:2085.7最小化数值错误..**1517.2.3数组大小和默认值*209.5.8示例学习**1527.2.4.访问数组元素.**209 1525.8.1求最大公约数7.2.5数组初始化语法*2105.8.2预测未来学费1547.2.6处理数组210.将十进制数转换为7.2.72125.8.3foreach循环·*1557.3十六进制数.示例学习:分析数字* 214..* 1567.45.9关键字break和continue示例学习:一副牌..215..*1597.55.10示例学习:判断回文串数组的复制·.217. 1607.65.11示例学习:显示素数将数组传递给方法***218关键术语1627.7从方法中返回数组:221本章小结1637.8示例学习:统计每个字母测试题*163**221出现的次数编程练习题1637.9可变长参数列表224.第6章方法.*225...1717.10数组的查找6.1引言…..1717.10.1线性查找法....2256.2...1727.10.2二分查找法….定义方法..226-6.3调用方法*1737.11数组的排序*228.6.47.12Arrays类void方法示例a-175·2306.5通过传值进行参数传递1787.13命令行参数2326.6模块化代码1817.13.1向main方法传递字符串2326.77.13.2示例学习:将十六进制数转换示例学习:计算器...232关键术语为十进制数183234:185本章小结·2356.8重载方法测试题6.9变量的作用域187235.编程练习题:2356.10示例学习:生成随机字符·188方法抽象和逐步求精190第8章多维数组:2426.1178.1引言6.11.1自项向下的设计191*242.自顶向下和自底向上的6.11.28.2二维数组的基础知识·242实现..1928.2.1声明二维数组变量并创建实现细节1936.11.3二维数组:2436.11.4逐步求精的优势:1968.2.2获取二维数组的长度244关键术语1968.2.3锯齿数组:·244本章小结1978.3处理二维数组...245.测试题1978.4将二维数组传递给方法.247..编程练习题..1978.5示例学习:多选题测验评分248..第7章一维数组.:2078.6示例学习:找出距离最近的....7.1引言...207点对·..2497.2数组的基础知识+*2078.7示例学习:数独**2518.8多维数组7.2.1声明数组变量208·254
XVII 5.6 嵌套循环 5.7 最小化数值错误 5.8 示例学习 5.8.1 求最大公约数 5.8.2 预测未来学费 5.8.3 将十进制数转换为 十六进制数 5.9 关键字break和continue 5.10 示例学习:判断回文串 . . 5.11 示例学习:显示素数 关键术@ 样小结 臟题 编程练习题 第6章 方 法 6 . 1 引 言 6.2 定义方法 6.3 调用方法 6.4 void方法示例 6.5 通过传值进行参数传递 6.6 模块化代码 6.7 示例学习:将十六进制数转换 为十进制数 6.8 重载方法 6.9 变量的作用域 6.10 示例学习:生成随机字符 . 6.11 方法抽象和逐步求精 6.11.1 自顶向下的设计 6.11.2 自顶向下和自底向上的 纽 6.11.3 实现细节 6.11.4 逐步求精的优势 关键术语 本章小结 测试题 编程练习题 第7章 一 维 数 组 7.1 引言 7.2 数组的基础知识 7.2.1 声明数组变量 7.2.2 创建数组 208 7.2.3 数组大小和默认值 209 7.2.4 访问数组元素 209 7.2.5 数组初始化语法 210 7.2.6 处理数组 210 7.2.7 foreach循环 212 7.3 示例学习:分析数字 214 7.4 示例学习:一副牌 215 7.5 数组的复制 217 7.6 将数组传递给方法 218 7.7 从方法中返回数组 221 7.8 示例学习:统计每个字母 出现的次数 221 7.9 可变长参数列表 224 7.10 数组的査找 225 7.10.1 线性查找法 225 7.10.2 二分查找法 226 7.11 数组的排序 228 7.12 Arrays类 230 7.13 命令行参数 232 7.13.1 向main方法传递字符串 . 232 7.13.2 示例学习:计算器 232 关键术语 234 样小结 235 職题 235 编程练习题 235 第8章 多 维 数 组 242 8.1 引言 242 8.2 二维数组的基础知识 242 8.2.1 声明二维数组变量并创建 二维数组 243 8.2.2 获取二维数组的长度 244 8.2.3 锯齿数组 244 8.3 处理二维数组 245 8.4 将二维数组传递给方法 247 8.5 示例学习:多选题测验评分 . . 248 8.6 示例学习:找出距离最近的 颜 249 8.7 示例学习:数独 251 8.8 多维数组 254 149 151 152 152 154 155 156 159 160 162 163 163 163 171 171 172 173 175 178 181 183 185 187 188 190 191 192 193 196 196 197 197 197 207 207 207 208
XVIII8.8.1示例学习:每日温度和10.4.1关联316湿度·*25510.4.2聚集和组合.3178.8.2示例学习:猜生日25610.5示例学习:设计course类318本章小结25810.6示例学习:设计栈类动.320测试题25810.7.将基本数据类型值作为对象258处理·编程练习题322.第9章对象和类270基本类型和包装类类型之间的10.8..自动转换9.1引言270....32510.9BigInteger和BigDecimal类....3269.2为对象定义类2709.3示例:定义类和创建对象.27210.10String类.....··3279.427710.10.1构造字符串··使用构造方法构造对象·3279.5*·27810.10.2不可变字符串与限定通过引用变量访问对象字符串9.5.1引用变量和引用类型·278·3289.5.2访问对象的数据和方法·27910.10.3字符串的替换和分隔3299.5.310.10.4依照模式匹配、替换和引用数据域和nu11值..279分隔9.5.4基本类型变量和引用类型329变量的区别28010.10.5字符串与数组之间的转换3309.6使用Java库中的类28210.10.6将字符和数值转换成9.6.1Date类282字符串..3319.6.2Random类-28310.10.7格式化字符串...3319.6.3Point2D类:28310.11StringBuilder和StringBuffer类9.7静态变量、常量和方法2843339.8可见性修饰符**289修改StringBuilder中的10.11.19.9字符..数据域封装291............334...9.10向方法传递对象参数.29410.11.2.tostringcapacity9.11对象数组*297length,setLength和9.12**299不可变对象和类charAt方法335*3019.13变量的作用域10.11.3示例学习:判断回文串时9.14302忽略既非字母又非数字的this引用宇符9.14.1使用this引用隐藏数据域302·336..关键术语3389.14.2使用this调用构造方法303福..关键术语本章小结339·304..本章小结304测试题339.:编程练习题测试题*305*339..编程练习题......305第11章继承和多态·347...第10章11.1引言347面向对象思考.30910.1引言.30911.2父类和子类34710.2使用super关键字类的抽象和封装*30911.3*353..10.3..31311.3.1调用父类的构造方法353面向对象的思考.10.4类的关系…31511.3.2构造方法链354
XVIII 8.8.1 示例学习:每日溫度和 酿 8.8.2 示例学习:猜生日 «小结 测试题 编程练习题 第9章对象和类 9.1 弓I言 9.2 为对象定义类 9.3 示例:定义类和创建对象 9.4 使用构造方法构造对象 9.5 通过引用变量访问对象 9.5.1 引用变量和引用类型 9.5.2 访问对象的數据和方法 . 9.5.3 引用教据域和null值 9.5.4 基本类型变量和引用类型 变量的区别 9.6 使用Java库中的类 9.6.1 Date类 9.6.2 Random类 9.6.3 Point2D类 9.7 静态变量、常量和方法 9.8 可见性修饰符 9.9 数据域封装 9.10 向方法传递对象参数 9.11 对象数组 9.12 不可变对象和类 9.13 变量的作用域 9.14 this引用 9.14.1 使用this引用隐藏数据域 . 9.14.2 使用this调用构造方法 关键賴 $章小结 »1试题 编程练习题 第10章面向对象思考 10.1 引言 10.2 类的抽象和封装 10.3 面向对象的思考 10.4 类的关系 10.4.1 关联 316 10.4.2 聚集和组合 317 10.5 示例学习:设计Course类 318 10.6 示例学习:设计栈类 320 10.7 将基本数据类型值作为对象 处理 322 10.8 基本类型和包装类类型之间的 自动转换 325 10.9 Biglnteger和BigDecimal类 326 10.10 String类 327 10.10.1 构造字符串 327 10.10.2 不可变字符串与限定 字符串 328 10.10.3 字符串的替换和分隔 .329 10.10.4 依照模式匹配、替换和 分隔 329 10.10.5 字符串与数组之间的转换 . 330 10.10.6 将字符和數值转换成 字符串 331 10.10.7 格式化字符串 331 10.11 StringBuilder和StringBuffer 类 333 10.11.1 修改Stri ngBuilder中的 字符串 334 10.11.2 toString、capacity、 length、setLength和 charAt方法 335 10.11.3 示例学习:判断回文串时 忽略既非字母又非数字的 字符 336 关键术语 338 本章小结 339 测试题 339 编程练习题 339 第1 1章继承和多态 347 11.1 引言 347 11.2 父类和子类 347 11.3 使用super关键字 353 11.3.1 调用父类的构造方法 353 11.3.2 构造方法链 354 255 256 258 258 258 270 270 270 272 277 278 278 279 279 280 282 282 283 283 284 289 291 294 297 299 301 302 302 303 304 304 305 305 309 309 309 313 315