目录 第1章 Java基本概念 1-1 认识Java2 1-2 Java的起源2 1-3 Java之父2 1-4 Java发展史3 1-5 Java的三大平台3 1-5-1 Java SE3 1-5-2 Java EE3 1-5-3 Java ME3 1-6 认识Java SE平台的JDK/JRE/JVM4 1-6-1 JDK4 1-6-2 JRE5 1-6-3 JVM5 1-7 Java跨平台原理5 1-7-1 一般程序的编译与执行5 1-7-2 Java程序的编译与执行5 1-8 Java语言的特点6 习题7 第2章 Java程序从零开始 2-1 我的**个Java程序9 2-1-1 程序设计流程9 2-1-2 编辑Java程序代码9 2-1-3 编译Java程序9 2-1-4 执行Java程序9 2-1-5 认识classpath10 2-2 解析Java的程序结构10 2-3 程序注释11 程度实操题13 习题14 第3章 Java语言基础 3-1 认识变量16 3-1-1 变量的声明16 3-1-2 设置有意义的变量名称17 3-1-3 了解注释的意义17 3-1-4 变量的命名规则18 3-2 基本数据类型19 3-2-1 整数数据类型19 3-2-2 浮点数数据类型22 3-2-3 字符数据类型23 3-2-4 布尔值25 3-3 字符串数据类型25 3-4 常量的概念26 3-5 精准控制格式化的输出27 程序实操题28 习题28 第4章 程序基本运算 4-1 程序设计的专有名词31 4-1-1 表达式31 4-1-2 运算符与操作数31 4-1-3 操作数也可以是一个表达式31 4-1-4 指定运算符31 4-1-5 二元运算符31 4-1-6 单元运算符32 4-1-7 三元运算符32 4-2 指定运算符的特殊用法说明32 4-3 基本数学运算33 4-3-1 四则运算33 4-3-2 求余数%33 4-3-3 递增与递减运算符33 4-3-4 正负号34 4-3-5 无限大34 4-3-6 发生异常35 4-3-7 非数字35 4-3-8 Java语言控制运算的优先级35 4-4 复合指定运算符35 4-5 布尔值、反向运算符、比较运算符与 逻辑运算符36 4-5-1 布尔值36 4-5-2 反向运算符36 4-5-3 比较运算符37 4-5-4 逻辑运算符37 4-5-5 再谈三元运算符38 4-6 位运算39 4-6-1 ~ 运算符40 4-6-2 位逻辑运算符40 4-6-3 位移位运算符41 4-6-4 位运算的复合指定运算符42 4-7 Java运算符优先级43 4-8 数据类型的转换44 4-8-1 指定运算符自动数据 类型的转换44 4-8-2 自动数据类型的转换46 4-8-3 强制数据类型的转换47 4-9 数据的转换与输入48 4-9-1 将整数转成字符串方式输出48 4-9-2 屏幕输入48 4-10 浅谈import与java.lang包50 4-10-1 再谈import50 4-10-2 java.lang包51 4-11 程序语句的结合与分行52 4-11-1 语句的结合52 4-11-2 语句的分行52 程序实操题52 习题53 第5章 程序流程控制 5-1 if语句56 5-1-1 基本if语句56 5-1-2 if … else语句58 5-1-3 再看三元运算符60 5-1-4 if … else if …else语句60 5-1-5 嵌套if语句63 5-2 switch语句64 程序实操题68 习题68 第6章 循环控制 6-1 for循环72 6-2 嵌套for循环73 6-3 while循环74 6-4 嵌套while循环75 6-5 do … while循环75 6-6 无限循环76 6-7 循环与break语句77 6-8 循环与continue语句78 6-9 循环标签与break/continue79 6-10 将循环应用于Scanner 类的输入检查80 6-11 循环相关的程序应用81 程序实操题82 习题83 第7章 数组 7-1 认识数组86 7-2 数组的声明与应用86 7-2-1 数组的声明86 7-2-2 数组的空间配置87 7-2-3 同时执行数组的声明与配置88 7-2-4 数组的属性length88 7-2-5 数组初值的设置88 7-2-6 特殊数组声明与初值设置89 7-2-7 常见的数组使用错误——索 引值超出数组范围90 7-2-8 foreach循环遍历数组90 7-2-9 与数组有���的程序实例90 7-3 Java参照数据类型92 7-3-1 原始数据类型93 7-3-2 参照数据类型93 7-4 垃圾回收94 7-4-1 参照计数95 7-4-2 更改参照95 7-4-3 参照计数减少的其他可能97 7-4-4 垃圾回收97 7-5 多维数组的原理97 7-5-1 多维数组元素的声明97 7-5-2 配置多维数组的空间98 7-5-3 声明与设置二维数组 元素的初值98 7-5-4 分层配置二维数组99 7-5-5 不同长度的二维数组99 7-6 Java命令行参数100 7-6-1 Java程序执行的参数数量100 7-6-2 命令行参数内容101 7-7 二维数组的程序应用101 程序实操题102 习题103 第8章 类与对象 8-1 认识对象与类106 8-2 定义类与对象107 8-2-1 定义类107 8-2-2 声明与建立类对象108 8-3 类的基本实例108 8-3-1 建立类的属性108 8-3-2 存取类的成员变量108 8-3-3 调用类的方法109 8-4 类含多个对象109 8-4-1 类含多个对象的应用109 8-4-2 建立类的对象数组110 8-5 类的参照数据类型111 8-5-1 类的参照内存图示111 8-5-2 类对象属性的初值111 8-5-3 细读类参照的内存图示112 8-6 再谈方法113 8-6-1 基本参数的传递113 8-6-2 认识形参与实参114 8-6-3 参数传递的方法114 8-6-4 方法的返回值116 8-6-5 可变参数的设计117 8-7 变量的有效范围118 8-7-1 for循环的索引变量118 8-7-2 foreach循环118 8-7-3 局部变量119 8-7-4 类内成员变量与方法变量有 相同的名称120 8-8 匿名数组121 8-9 递归式方法设计122 8-10 河内塔问题122 程序实操题124 习题125 第9章 对象构造与封装 9-1 构造方法128 9-1-1 默认的构造方法128 9-1-2 自建构造方法129 9-1-3 重载130 9-1-4 this关键词135 9-2 类的访问权限——封装137 9-2-1 类成员的访问控制138 9-2-2 设计具有封装效果的程序140 9-3 static关键词141 9-3-1 static成员变量141 9-3-2 使用类名称直接存取143 9-3-3 静态成员变量的初始区块144 9-3-4 将static成员变量应用于人数 总计144 9-3-5 static方法145 9-3-6 认识main()145 9-3-7 final关键词与static成员变量146 程序实操题146 习题147 第10章 内建Math和Random类 10-1 数学常量149 10-2 随机数的应用150 10-3 求较大值max()/较小值min()151 10-4 求**值abs()151 10-5 四舍五入round()152 10-6 返回*接近的整数值rint()152 10-7 求近似值ceil()/floor()152 10-8 一般的数学运算方法153 10-9 三角函数的应用154 10-10 Random类155 程序实操题155 习题156 第11章 日期与时间类 11-1 Date类158 11-2 Java 8后的新日期与时间类159 11-2-1 LocalDate类159 11-2-2 LocalTime类160 11-2-3 LocalDateTime类161 11-2-4 时间戳Instant类162 11-2-5 Duration类162 11-2-6 Period类163 程序实操题163 习题163 第12章 字符与字符串类 12-1 字符Character类166 12-2 字符串的建立167 12-2-1 基本字符串类型声明168 12-2-2 使用构造方法建立字符串 对象168 12-2-3 再看String类的参照169 12-2-4 String对象内存内容无法 更改170 12-3 String类的方法171 12-3-1 字符串长度相关的方法171 12-3-2 大小写转换171 12-3-3 字符的查找172 12-3-4 子字符串的查找172 12-3-5 截取字符串的子字符串或 字符173 12-3-6 字符串的替换174 12-3-7 字符串的连接175 12-3-8 字符串的比较175 12-3-9 字符串的转换177 12-3-10 字符串的split()方法177 12-4 StringBuffer类178 12-4-1 建立StringBuffer类对象178 12-4-2 处理字符串缓冲区长度和 容量179 12-4-3 字符串缓冲区内容修改的 方法179 12-4-4 设置与替换180 12-4-5 复制子字符串180 12-5 StringBuilder类181 12-6 字符串数组的应用181 程序实操题182 习题182 第13章 正则表达式 13-1 使用Java硬功夫查找文字185 13-2 使用String类处理正则表达式187 13-2-1 正则表达式基础187 13-2-2 使用大括号{ }处理重复 出现的字符串188 13-2-3 处理市区电话字符串方式188 13-2-4 用括号分组189 13-2-5 用小括号处理区域号码189 13-2-6 使用管道|190 13-2-7 使用 问号做查找190 13-2-8 使用*号做查找191 13-2-9 使用 号做查找191 13-2-10 查找时使用大括号 设置比对次数区间191 13-2-11 正则表达式量次的表192 13-3 正则表达式的特殊字符192 13-3-1 特殊字符表192 13-3-2 单一字符使用通配符“.”193 13-3-3 字符分类193 13-3-4 字符分类的^字符194 13-3-5 所有字符使用通配符“.*”194 13-4 matches()方法的万用程序与 功能扩充194 13-5 再谈String类有关的正则 表达方法195 13-5-1 replaceFirst()方法195 13-5-2 replaceAll()方法196 13-6 正则表达式的包196 13-6-1 基本字符串的比对197 13-6-2 字符串的查找198 13-6-3 字符串的替换198 程序实操题199 习题199 第14章 继承与多态 14-1 继承202 14-1-1 从三个简单的Java程序谈起202 14-1-2 继承的语法204 14-1-3 观察父类构造方法的启动205 14-1-4 父类属性是public子类初始化 父类属性205 14-1-5 父类属性是private调用父类 构造方法206 14-1-6 存取修饰符protected207 14-1-7 分层继承208 14-1-8 多层次继承210 14-1-9 继承类总结与陷阱211 14-1-10 常见的继承程序设计211 14-1-11 父类与子类有相同的成员 变量名称212 14-2 IS-A和HAS-A关系213 14-2-1 IS-A关系与instanceof213 14-2-2 HAS-A关系——聚合214 14-2-3 HAS-A关系——组合216 14-3 Java程序代码太长的处理217 14-4 重写219 14-4-1 基本定义219 14-4-2 super关键词应用于Override220 14-4-3 重写方法时访问 权限不**父类严220 14-4-4 不能重写static方法221 14-4-5 不能重写final方法221 14-4-6 @Overload222 14-5 重载父类的方法222 14-6 多态223 14-6-1 编译时多态223 14-6-2 执行时多态223 14-7 静态绑定与动态绑定227 14-8 嵌套类别228 14-8-1 内部类228 14-8-2 方法内部类229 14-8-3 匿名内部类230 14-8-4 匿名类当作参数传送231 程序实操题231 习题232 第15章 Object类 15-1 认识扩充Object类235 15-2 Object类的方法235 15-3 认识哈希码与hashCode()235 15-3-1 认识哈希码235 15-3-2 hashCode()236 15-4 equals()方法237 15-5 toString()方法238 15-6 getClass()方法239 程序实操题239 习题240 第16章 抽象类 16-1 使用抽象类的场合242 16-2 抽象类基本概念243 16-3 抽象方法的基本概念244 16-4 抽象类与抽象方法概念整理245 16-5 抽象类的构造方法247 16-6 使用Upcasting声明抽象类的对象247 16-7 抽象类与方法的程序应用247 程序实操题248 习题248 第17章 接口 17-1 认识接口251 17-2 接口的成员变量252 17-3 Java 8新增加接口内容253 17-3-1 Default方法254 17-3-2 static方法255 17-4 Java 9新增加接口内容256 17-5 基本接口的继承258 17-6 接口多重继承259 17-7 实现时发生成员变量有相同名称261 17-8 类重写Default方法262 17-9 一个类同时继承类与实现接口263 17-10 类分别继承父类与实现接口发生 方法名称冲突264 17-11 多层次继承中发生Default 方法名称相同265 17-12 名称冲突的钻石问题266 程序实操题267 习题268 第18章 Java包装类 18-1 基本概念271 18-2 认识包装类271 18-3 认识自动封箱与拆箱272 18-4 建立包装类对象272 18-4-1 使用构造方法建立包装类 对象272 18-4-2 自动封箱的实例273 18-4-3 拆箱的实例273 18-5 使用valueOf()建立对象274 18-6 取得Number类对象的值275 18-7 包装类的常量275 18-8 将基本数据转成字符串toString()276 18-9 将字符串转成基本数据类型 parseXXX()277 18-10 比较方法277 18-10-1 比较是否相同equals()277 18-10-2 比较大小compareTo()278 程序实操题278 习题279 第19章 设计包 19-1 复习包名称的导入281 19-1-1 基本概念281 19-1-2 不同包名称冲突282 19-1-3 包层次声明的注意事项283 19-1-4 静态static成员导入声明284 19-2 设计java包基础知识285 19-3 java包的优点285 19-4 建立、编译与执行包286 19-4-1 建立包基础知识286 19-4-2 包与文件夹287 19-4-3 编译包287 19-4-4 执行包288 19-4-5 使用包但是没有导入包288 19-4-6 建立含多个类文件的包289 19-5 包与应用程序分属不同文件夹291 19-6 建立子包293 19-7 包的访问控制294 19-8 将抽象类应用于包295 19-9 将编译文件送至不同文件夹的方法296 程序实操题298 习题298 第20章 程序异常的处理 20-1 认识程序错误的类别301 20-2 认识简单的异常实例301 20-2-1 除数为0的异常302 20-2-2 使用者输入错误的异常302 20-2-3 数组运算发生索引值超出 范围303 20-2-4 其他常见的异常303 20-3 处理异常方法304 20-3-1 程序设计师处理异常方式304 20-3-2 再谈Java处理异常方式304 20-3-3 异常类Throwable305 20-4 try-catch306 20-4-1 简单的try-catch程序实例307 20-4-2 简单多个catch区块的应用309 20-5 捕捉上层的异常310 20-6 try/catch/finally312 20-7 Throwable类313 20-8 自行抛出异常throw314 20-9 方法抛出异常throws315 20-10 使用者自定义异常类318 程序实操题320 习题320 第21章 多线程 21-1 认识程序、进程、线程323 21-2 认识多任务作业324 21-2-1 Process-based Mutitasking的特点324 21-2-2 Thread-based Mutitasking的特点325 21-3 Java的多线程325 21-3-1 认识线程325 21-3-2 多线程的优点325 21-4 线程的生命周期325 21-5 建立线程326 21-5-1 Thread类326 21-5-2 多线程的赛马程序设计328 21-5-3 Runnable接口329 21-6 再看Java线程的工作原理330 21-7 让线程进入睡眠330 21-8 线程的join()方法331 21-9 线程的优先级值331 21-10 守护线程333 21-10-1 关于守护线程的**333 21-10-2 JVM终止守护线程原因333 21-10-3 Thread类内有关守护 线程的方法333 21-11 Java的同步334 21-11-1 同步的目的334 21-11-2 同步的形式334 21-11-3 线程同步334 21-11-4 了解未同步所产生的问题334 21-11-5 同步方法335 21-12 匿名类336 21-13 同步区块337 21-14 同步静态方法337 21-15 认识死锁338 21-16 线程内部通信339 21-16-1 wait()方法339 21-16-2 notify()方法340 21-16-3 notifyAll()方法340 程序实操题341 习题342 第22章 输入与输出 22-1 认识流344 22-2 InputStream和OutputStream类344 22-3 适用byte数据文件输入与 输出的类346 22-3-1 FileOutputStream类346 22-3-2 FileInputStream类347 22-3-3 图片文件复制的实例348 22-4 使用缓冲区处理byte数据文件 输入与输出349 22-4-1 BufferedOutputStream类349 22-4-2 BufferedInputStream类350 22-5 Writer和Reader类351 22-6 字符读取与写入FileReader类与 FileWriter类352 22-6-1 FileWriter类352 22-6-2 FileReader类353 22-7 字符数据输入与输出BufferedReader/ BufferedWriter类354 22-7-1 BufferedWriter类354 22-7-2 BufferedReader类354 22-8 System类355 22-9 PrintStream类356 22-10 Console类357 22-11 文件与文件夹的管理File类358 程序实操题361 习题362 第23章 压缩与解压缩文件 23-1 基本概念与认识java.util.zip包364 23-2 压缩文件364 23-2-1 压缩单一文件365 23-2-2 压缩多个文件366 23-2-3 压缩整个文件夹366 23-3 解压缩文件368 程序实操题369 习题369 第24章 Java Collection 24-1 认识泛型372 24-1-1 泛型类372 24-1-2 泛型方法373 24-1-3 泛型的通配符373 24-2 认识集合对象374 24-2-1 Iterable接口375 24-2-2 Collection接口375 24-3 List接口376 24-3-1 ArrayList类376 24-3-2 LinkedList类380 24-3-3 数据结构堆栈382 24-3-4 数据结构队列383 24-3-5 ListIterator接口384 24-4 Set接口385 24-4-1 HashSet类385 24-4-2 LinkedHashSet类386 24-4-3 TreeSet类387 24-5 Map接口388 24-5-1 HashMap类388 24-5-2 LinkedHashMap类390 24-5-3 TreeMap类390 24-6 Java Collections Framework 算法391 程序实操题392 习题393 第25章 现代Java运算 25-1 增强版的匿名内部类396 25-2 Lambda表达式396 25-2-1 Lambda表达式有传递参数397 25-2-2 Lambda表达式没有return398 25-3 forEach()398 25-4 方法参照398 25-4-1 参考静态方法399 25-4-2 参考实例方法399 25-4-3 参考构造方法400 25-5 Java的工厂方法400 25-5-1 List接口400 25-5-2 Set接口401 25-5-3 Map接口401 25-5-4 Map接口的ofEntries()方法402 25-6 Java新的版本字符串格式402 程序实操题403 习题403 第26章 窗口程序设计使用AWT 26-1 AWT类结构图405 26-2 Frame类406 26-3 窗口组件颜色的设置——Color类408 26-4 标签Label 类409 26-5 字型设置——Font类411 26-6 Button类412 26-7 建立文字输入对象412 26-7-1 TextField类413 26-7-2 TextArea类414 26-8 Checkbox类415 26-9 CheckboxGroup类416 26-10 版面配置管理员417 26-10-1 边界版面配置类417 26-10-2 方格版面配置类419 26-10-3 流动式版面配置类419 26-10-4 卡片式版面配置类421 程序实操题422 习题423 第27章 事件处理 27-1 委派事件模式426 27-2 简单按钮事件处理426 27-3 认识事件处理类428 27-4 ActionEvent事件类431 27-5 ItemEvent类433 27-6 TextEvent类434 27-7 KeyEvent类435 27-8 KeyAdapter类437 27-9 MouseEvent类438 27-9-1 MouseListener接口438 27-9-2 MouseAdapter类439 27-9-3 MouseMotionListener接口440 27-9-4 MouseMotionAdapter类441 27-10 WindowEvent类441 27-11 WindowAdapter类443 程序实操题443 习题444 第28章 再谈AWT对象 28-1 列表(List)类446 28-1-1 建立列表446 28-1-2 列表的事件处理448 28-2 下拉式列表(Choice)类448 28-2-1 建立下拉式列表449 28-2-2 下拉式列表的事件处理450 28-3 菜单设计450 28-3-1 建立菜单451 28-3-2 菜单的事件处理453 28-4 滚动条(Scrollbar)类454 28-5 对话框(Dialog)类456 28-6 文件对话框(FileDialog)类458 程序实操题460 习题460 第29章 使用Swing进行窗口程序 设计 29-1 Swing层次结构图462 29-2 JFrame类462 29-2-1 建立简单的JFrame窗口462 29-2-2 JFrame窗格的基本概念463 29-3 JButton类464 29-4 JLabel类466 29-5 JCheckBox类469 29-6 JRadioButton类471 29-7 JOptionPane类473 29-8 JList类474 29-9 JColorChooser类477 29-10 JTextField类479 29-11 JTextArea类480 29-12 JPasswordField类482 29-13 JTabbedPane类483 29-14 本章结尾483 程序实操题483 习题484 第30章 绘图与动画 30-1 认识坐标系统486 30-2 AWT绘图487 30-2-1 取得绘图区与绘图实例487 30-2-2 省略触发机制绘图489 30-2-3 认识窗口的绘图区空间489 30-3 Swing绘图490 30-4 颜色与字型491 30-5 Graphics类492 30-6 Graphics2D类496 30-6-1 Graphics2D的新概念497 30-6-2 绘图类498 30-6-3 Graphics2D着色501 30-7 拖曳鼠标绘制线条501 30-8 动画设计502 程序实操题504 习题504 第31章 网络程序设计 31-1 认识Internet网址507 31-2 Java InetAddress类507 31-3 URL类508 31-4 URLConnection类510 31-5 HttpURLConnection类513 31-6 C/S架构程序设计基本概念513 31-6-1 Java Socket Client端的设计514 31-6-2 Java Socket Server端的设计516 31-7 UDP通信518 程序实操题520 附录A Java下载、安装与环境设置 A-1 下载Java522 A-2 安装Java523 A-3 Java环境设置524 A-3-1 设置Path环境变量524 A-3-2 验证Path环境变量526 A-3-3 设置classpath环境变量526 A-4 下载Java 10文件527