目录 第1章初识Java与面向对象程序设计/1 11Java概述/1 111计算机编程语言发展史/1 112Java语言发展史/2 113Java语言的特点/3 114Java跨平台原理/6 12面向对象程序设计思想/6 121面向过程程序设计/6 122面向对象程序设计/6 123面向对象与面向过程程序设计的比较/7 13Java开发环境搭建/7 131JDK与JRE/7 132JDK安装/8 133环境变量配置/9 14第一个Java程序: HelloWorld!/11 141显示文件扩展名/11 142编写代码/12 143编译与执行/12 144代码解析/12 145代码的注释 /13 15Java常用开发工具/14 151Eclipse的安装与使用/14 152IntelliJ IDEA的安装与使用/16 16本章思政元素融入点/19 17本章小结/23 18习题/23 第2章Java编程基础/24 21变量与常量/24 211关键字和保留字/24 212标识符与命名规范/24 213数据类型/25 214变量的定义与赋值/26 215常量/27 216变量的类型转换/27 217Scanner的使用/29 22运算符与表达式/29 221算术运算符/29 222赋值运算符/31 223关系运算符/31 224逻辑运算符/32 225位运算符/33 226三元运算符/34 227运算符的优先级/35 23选择结构/36 231if语句/36 232switch语句/37 233选择结构的嵌套/41 234两种选择结构的对比/42 24循环结构/42 241for语句/42 242while语句/43 243do…while语句/44 244break和continue语句/45 245循环语句的嵌套/46 246三种循环结构的应用场景/47 25方法/48 251方法介绍/48 252方法声明与调用/48 253方法重载/51 254方法递归/52 26数组/53 261数组概述/53 262数组的常见操作/54 263数组排序算法/58 264二分查找法/61 265方法中的可变参数/63 266二维数组/63 267Arrays工具类/65 27JVM中的堆内存与栈内存/65 271堆和栈/65 272数据类型传递/67 273方法中的数据交换/67 28本章思政元素融入点/68 29本章小结/68 210习题/69 第3章面向对象程序设计(基础)/70 31面向对象的概念/70 311什么是面向对象/70 312面向对象的特性/70 313类和对象/70 32面向对象编程/71 321类的定义/71 322对象的创建与使用/72 323成员变量默认值/72 324对象内存分析/73 325匿名对象/75 33构造方法/75 331什么是构造方法/75 332构造方法的使用/76 333构造方法的重载/77 34this关键字/78 341this关键字介绍/78 342this关键字的使用/78 35static关键字/79 351静态变量/79 352静态方法/80 353静态代码块/82 36包/83 361包的概念/83 362类的访问与导包/84 37本章思政元素融入点/84 38本章小结/85 39习题/85 第4章面向对象程序设计(进阶)/87 41封装/87 411什么是封装/87 412访问修饰符/87 413get()/set()方法/88 42继承/90 421什么是继承/90 422继承的使用/90 423方法重写/92 43super关键字/93 431super关键字的使用/93 432super与this对比/94 44final关键字/95 441final关键字介绍/95 442final关键字的使用/95 45Object类/96 451Object类介绍/96 452Object类的常见方法/96 46多态/101 461什么是多态/101 462多态的实现/101 463引用类型数据转换/103 464多态中变量与方法的调用/105 47抽象类/107 471什么是抽象类/107 472抽象类的定义与使用/107 48接口/109 481什么是接口/109 482接口的定义与使用/110 483接口的多实现/112 484接口的继承/113 485接口的static方法和default方法/114 486抽象类与接口的区别/115 49内部类概述/116 491内部类/116 492成员内部类/116 493静态内部类/117 494局部内部类/119 495匿名内部类/120 410本章思政元素融入点/121 411本章小结/121 412习题/122 第5章异常/123 51异常概述/123 511什么是异常/123 512异常与错误/123 513Throwable与异常体系/124 514Exception/125 52异常处理/126 521抛出异常/126 522声明异常/127 523捕获异常/128 53异常进阶/130 531自定义异常/130 532方法重写中的异常/132 54本章思政元素融入点/133 55本章小结/133 56习题/133 第6章Java常用类/135 61包装类/135 611什么是包装类/135 612基本数据类型与包装类/136 613自动装箱与拆箱/137 614大数字运算/138 62String类概述/141 621String类/141 622String类查找方法/142 623String类转换方法/143 624String类中的其他方法/14463StringBuffer类与StringBuilder类/145 631StringBuffer类/145 632StringBuffer类常见方法/146 633StringBuilder类/147 634字符串拼接效率比较/147 635链式编程/148 64时间和日期相关类/149 641时间戳/149 642Date类/149 643SimpleDateFormat类/151 644Calendar类/152 65其他常用类/153 651Math类/153 652Random类/155 653UUID类/155 654枚举类/156 66本章思政元素融入点/157 67本章小结/158 68习题/158 第7章集合与泛型/159 71集合概述/159 711集合介绍/159 712Collection接口/159 72List接口概述/161 721List接口/161 722ArrayList类/162 723LinkedList类/163 724Vector类/164 725集合的遍历/165 726Collections工具类/165 73泛型概述/168 731泛型/168 732泛型的使用/169 733泛型类与泛型接口/170 734泛型方法/172 735泛型通配符/173 74Iterator迭代器/174 741为什么要使用迭代器/174 742Iterator类/175 75Map接口/176 751Map接口概述/176 752HashMap类/176 753Map的遍历/177 754LinkedHashMap类/179 755Hashtable类/179 756TreeMap类/180 757Comparable与Comparator/180 76Set接口/183 761Set接口概述/183 762HashSet类/184 763LinkedHashSet类/185 764TreeSet类/185 77本章小结/186 78习题/186 第8章Lambda与Stream/187 81Lambda表达式/187 811Lambda简介/187 812函数式接口/187 813Lambda基础语法/188 814Lambda的语法简化/190 815方法引用/191 816集合中使用Lambda/192 82Stream/193 821Stream介绍/193 822Stream的使用/194 83本章小结/202 84习题/203 第9章文件与I/O流/204 91I/O流/204 911输入与输出/204 912I/O流体系/204 92File类/205 921File类概述/205 922File类的常用方法/205 923File操作文件/206 924遍历目录文件/208 93字节流/209 931OutputStream/209 932InputStream/210 94字符流/211 941Reader/211 942Writer/213 95缓冲流概述/214 951复制文件案例/214 952缓冲流/216 953字节缓冲流/216 954字符缓冲流/218 96打印流概述/219 961打印流/219 962PrintWriter/220 97对象流概述/221 971对象流/221 972序列化与反序列化/221 973对象流使用/221 974序列化版本ID/223 98字节数组流概述/224 981字节数组流/224 982ByteArrayOutputStream/224 983ByteArrayInputStream/225 99本章小结/226 910习题/227 第10章JDBC/228 101JDBC概述/228 102准备工作/229 1021数据库选择/229 1022建表/229 1023JDBC快速上手/230 103JDBC操作数据库/233 1031使用JDBC添加数据/233 1032使用JDBC更新数据/234 1033使用JDBC删除数据/234 1034使用JDBC分页查询/235 104JDBC工具类封装/238 1041为什么要封装DBUtils/238 1042封装DBUtils/238 1043DBUtils增加、删除、修改、查询/240 105SQL注入问题/248 1051SQL注入演示/248 1052什么是SQL注入/249 1053使用PreparedStatement解决SQL注入问题/249 106JDBC事务处理/251 1061什么是事务/251 1062事务的四大特性/251 1063使用事务模拟转账/251 107JDBC连接池/253 1071池化技术/253 1072JDBC连接池介绍/253 1073自定义连接池/254 1074测试连接池性能/256 108本章思政元素融入点/258 109本章小结/258 1010习题/259 第11章多线程/260 111多线程概述/260 1111多线程介绍/260 1112进程/260 1113线程/261 112线程的创建/261 1121继承Thread类/261 1122实现Runnable接口/263 1123Callable与Future结合/265 1124实现多线程方法的对比/266 113线程的生命周期和状态转换/266 1131线程生命周期介绍/266 1132线程的状态转换/268 114synchronized关键字/274 1141线程安全概述/274 1142同步方法/275 1143同步代码块/276 1144死锁/279 115线程通信/281 1151等待唤醒机制/281 1152生产者消费者模式/282 116显式锁Lock/289 1161synchronized存在的问题/289 1162ReentrantLock/289 1163Condition与生产者消费者/291 117Java并发包/294 1171并发包介绍/294 1172AtomicInteger/294 1173CountDownLatch/295 1174ConcurrentHashMap/297 1175BlockingQueue介绍/298 1176ArrayBlockingQueue/299 1177LinkedBlockingQueue/301 1178DelayQueue/301 118线程池/303 1181线程池介绍/303 1182线程池原理/303 1183Executors工具类创建线程池/304 1184ExecutorService接口/305 1185自定义线程池/307 119本章小结/310 1110习题/310 第12章网络编程/311 121网络通信协议/311 122TCP和UDP/312 1221TCP/312 1222UDP/312 123IP与端口/313 1231IP地址与分类/313 1232端口与分类/313 1233IP与端口相关类/313 124Socket通信/315 1241长连接与短连接/315 1242Socket通信流程/315 1243Socket与ServerSocket/315 1244Socket通信示例/317 1245使用while循环接收消息/319 1246多线程下的Socket编程/320 1247实现一个网课聊天室/322 125Java中的UDP/325 1251UDP/325 1252Java使用UDP进行数据传输/325 126HTTP/327 1261URL介绍/327 1262Java中的URL类/327 1263HTTP介绍/328 1264HttpURLConnection类/329 127本章思政元素融入点/331 128本章小结/332 129习题/332 第13章反射与注解/333 131反射/333 1311什么是反射/333 1312Java程序在计算机中的3个阶段/333 1313反射相关的类/334 1314获取Class/335 1315Class类的相关方法/336 1316Field类的相关方法/336 1317Constructor类的相关方法/339 1318Method类的相关方法/340 1319使用反射验证泛型擦除/343 132注解/344 1321什么是注解/344 1322注解的语法/344 1323注解的属性/344 1324元注解/345 1325注解的使用/347 133本章小结/348 134习题/349 参考文献/350