关于我们
书单推荐
新书推荐
|
剑指Java——核心原理与应用实践 读者对象:初学编程的自学者、编程爱好者、大中专院校的老师和学生、相关培训机构的老师和学员、做毕设的学生、初、中级程序开发人员、程序测试即维护人员、参加实习的"菜鸟”程序员
本书分为四大部分:第1~6章,初步认识Java的基础语法及主流编程工具的使用;第7~11章,详解Java面向对象编程语言的语法、核心编程思想、基础API等;第12~17章,介绍使用Java进行高级应用开发所需的API和基础原理;第18、19章,介绍了Java8~Java17版本的新特性。本书核心内容基于目前企业应用最主流的Java8进行讲解,读者可以直接进阶到最近的长期支持版本Java17。本书遵循深入浅出的原则编写,既有生动活泼的生活化案例讲解,又有干货满满的源码级分析,可以让读者轻松领会Java技术精髓,快速掌握Java开发技能。本书为每一个知识点的讲解都配备了案例,代码量庞大,如果读者跟随本书案例练习会大大提升自身的代码编写能力。本书配套名师视频教程,读者在学习过程中可结合视频学习,让你的Java进阶之路事半功倍,为后续的技术提升打下坚实的基础。 本书适合初学Java编程语言的自学者、编程爱好者学习,还适合各类院校计算机相关专业的师生作为教材或教辅资料使用,是Java编程语言入门的必备图书。
尚硅谷教育是一家专业的IT教育培训机构,开设了JavaEE、大数据、HTML5前端等多门学科,在互联网上发布的JavaEE、大数据、HTML5前端、区块链、C语言、Python等技术视频教程广受赞誉。
第1章 Java语言概述 1
1.1 Java语言的发展简史 1 1.2 Java语言的发展前景 3 1.3 Java语言的技术体系平台 4 1.4 Java语言的特点 4 1.5 Java语言的核心机制之JVM 6 1.6 Java语言的开发环境和运行环境 7 1.7 本章小结 8 第2章 第一个Java程序:HelloWorld 9 2.1 开发的前期准备 9 2.1.1 JDK的下载 9 2.1.2 JDK的安装 10 2.1.3 JDK的目录介绍 12 2.1.4 配置环境变量 12 2.2 第一个Java程序 17 2.2.1 Java程序开发步骤 17 2.2.2 第一个Java程序的剖析 19 2.2.3 几个初学者易犯的错误 19 2.3 Java注释 23 2.3.1 单行注释 23 2.3.2 多行注释 23 2.3.3 文档注释 24 2.4 文本编辑器的介绍 25 2.4.1 下载与安装 25 2.4.2 语言环境设置 25 2.4.3 开发Java程序 26 2.4.4 字符编码设置 27 2.4.5 默认开发语言设置 29 2.5 案例:打印个人信息 30 2.6 本章小结 30 第3章 基础语法 31 3.1 关键字和保留字 31 3.1.1 关键字 32 3.1.2 保留字 32 3.1.3 特殊值 32 3.2 标识符 33 3.2.1 标识符的命名规则 33 3.2.2 标识符的命名规范 33 3.2.3 案例:标识符辨析 33 3.3 变量 34 3.3.1 变量的声明与使用 34 3.3.2 变量的注意事项 36 3.4 数据类型 37 3.4.1 计算机数据存储方式 38 3.4.2 整型 39 3.4.3 浮点型 40 3.4.4 字符型 41 3.4.5 布尔型 43 3.4.6 案例:用变量保存个人信息 43 3.5 数据类型的转换 44 3.5.1 自动类型转换 44 3.5.2 强制类型转换 45 3.5.3 案例:基础练习 46 3.6 运算符和标点符号 48 3.6.1 算术运算符 48 3.6.2 赋值运算符 53 3.6.3 比较运算符 54 3.6.4 逻辑运算符 55 3.6.5 位运算符 56 3.6.6 条件运算符 61 3.6.7 运算符的优先级 61 3.6.8 标点符号 62 3.7 本章案例 62 3.7.1 案例:实现算术运算 62 3.7.2 案例:求一个三位数字各个 位数上的和 63 3.7.3 案例:交换两个变量的值 63 3.7.4 案例:判断某个年份是否是 闰年 64 3.7.5 案例:将小写字母转为对应 的大写字母 64 3.8 本章小结 65 第4章 流程控制语句结构 66 4.1 顺序结构 66 4.1.1 顺序结构的特点 66 4.1.2 输出语句 67 4.1.3 输入语句 67 4.1.4 案例:从键盘中输入个人 信息 69 4.2 分支结构之if…else 70 4.2.1 单分支条件判断if 70 4.2.2 案例:2月份的总天数 71 4.2.3 双分支条件判断if…else 71 4.2.4 案例:平年、闰年 72 4.2.5 多分支条件判断if…else if 72 4.2.6 案例:征婚 74 4.2.7 案例:解方程 75 4.3 分支结构之switch-case 76 4.3.1 分支结构switch-case 76 4.3.2 分支结构与条件判断的区别 79 4.3.3 案例:判断这一天是当年的 第几天 80 4.4 循环结构 81 4.4.1 while语句 82 4.4.2 案例:趣味折纸 83 4.4.3 do…while语句 83 4.4.4 案例:猜数字 84 4.4.5 for语句 85 4.4.6 案例:水仙花数 86 4.4.7 三种循环语句的对比 87 4.4.8 嵌套循环 87 4.4.9 案例:九九乘法表 88 4.4.10 案例:完数 89 4.5 跳转语句 89 4.5.1 break语句 90 4.5.2 continue语句 91 4.5.3 return语句 92 4.5.4 案例:素数 92 4.6 综合案例 93 4.7 本章小结 95 第5章 数组 96 5.1 数组概述 96 5.2 一维数组 99 5.2.1 一维数组的声明 99 5.2.2 一维数组的初始化 99 5.2.3 数组元素默认值 101 5.2.4 一维数组的遍历 102 5.2.5 一维数组内存分析 103 5.2.6 案例:遍历英文字母大小写 103 5.2.7 案例:打鱼还是晒网 104 5.3 数组的算法 105 5.3.1 元素特征值统计 105 5.3.2 最值查找 106 5.3.3 顺序查找 106 5.3.4 二分查找 108 5.3.5 冒泡排序 110 5.3.6 快速排序 111 5.3.7 数组的复制 114 5.3.8 元素的反转 116 5.4 动态数组的实现 118 5.4.1 数组元素的增加 118 5.4.2 数组元素的删除 120 5.5 多维数组 122 5.5.1 多维数组的声明 123 5.5.2 多维数组的初始化 123 5.5.3 案例:杨辉三角 125 5.5.4 案例:矩阵转置 126 5.6 本章小结 127 第6章 开发工具IntelliJ IDEA 128 6.1 IntelliJ IDEA概述 128 6.2 下载与安装 129 6.2.1 下载 129 6.2.2 安装 130 6.3 初始化设置 133 6.4 快速创建并运行Java工程 134 6.5 详细设置 137 6.5.1 字体大小设置 137 6.5.2 字符编码设置 138 6.5.3 大小写不敏感设置 138 6.5.4 自动导包 139 6.5.5 启动退出设置 140 6.5.6 自动更新 141 6.6 快速开发 141 6.6.1 代码模板 141 6.6.2 快捷键 142 6.7 多模块的IDEA工程 144 6.8 本章小结 148 第7章 面向对象编程基础 149 7.1 面向对象与面向过程 149 7.2 类与对象 150 7.2.1 类与对象的关系 150 7.2.2 类的声明 150 7.2.3 对象的创建 152 7.3 类的成员之成员变量 153 7.3.1 成员变量的声明 153 7.3.2 成员变量的访问 154 7.3.3 成员变量默认值 155 7.3.4 对象的内存分析 156 7.3.5 成员变量与局部变量的区别 158 7.3.6 案例:商品类与对象 158 7.3.7 案例:银行账户类与对象 159 7.4 类的成员之方法 160 7.4.1 方法的声明 160 7.4.2 方法的调用 162 7.4.3 方法的传参机制 163 7.4.4 案例:圆类方法设计与调用 167 7.4.5 案例:数组工具类方法设计 与调用 168 7.5 方法的重载 171 7.5.1 重载方法的声明和调用 171 7.5.2 案例:求三角形面积 173 7.6 特殊参数 174 7.6.1 命令行参数 174 7.6.2 可变参数 176 7.6.3 案例:n个字符串拼接 177 7.7 方法的递归调用 178 7.7.1 递归调用 178 7.7.2 案例:猴子吃桃 179 7.7.3 案例:走台阶 180 7.8 对象数组的使用 181 7.8.1 对象数组 181 7.8.2 对象数组的内存分析 182 7.8.3 案例:员工信息管理 183 7.9 本章小结 184 第8章 面向对象编程进阶 185 8.1 类的成员之构造器 185 8.1.1 构造器的声明 185 8.1.2 构造器的使用 186 8.1.3 案例:矩形类构造器的设计 187 8.2 面向对象的基本特征之封装性 188 8.2.1 封装的体现 188 8.2.2 访问权限修饰符 189 8.2.3 案例:矩形类的封装 191 8.3 this关键字 192 8.3.1 this关键字的使用场景 193 8.3.2 案例:矩形类代码的改进 195 8.3.3 案例:银行账户类的改进 196 8.3.4 什么是JavaBean 198 8.4 包的使用 199 8.4.1 包的声明 199 8.4.2 使用其他包的类 201 8.4.3 常用包介绍 202 8.4.4 案例:员工信息管理 203 8.5 面向对象的基本特征之继承性 205 8.5.1 为什么需要继承 206 8.5.2 如何实现类的继承 207 8.5.3 类继承性的特点 207 8.5.4 方法的重写 213 8.5.5 super关键字 214 8.5.6 案例:员工和学生信息管理 216 8.6 面向对象基本特征之多态性 218 8.6.1 对象的多态性表现 218 8.6.2 多态性的应用 220 8.6.3 向上转型与向下转型 222 8.6.4 instanceof关键字 223 8.6.5 案例:图形对象管理 224 8.6.6 企业面试题 228 8.7 类的成员之代码块 228 8.7.1 代码块的语法 229 8.7.2 类的初始化 229 8.7.3 案例:类初始化 230 8.7.4 对象的初始化 232 8.7.5 案例:对象初始化 234 8.7.6 企业面试题 236 8.8 本章小结 237 第9章 面向对象高级编程 238 9.1 final关键字 238 9.2 native关键字 240 9.3 abstract关键字 241 9.3.1 抽象方法 241 9.3.2 抽象类 241 9.3.3 案例:模板设计模式 244 9.3.4 案例:员工工资系统 246 9.4 接口 249 9.4.1 接口的好处 249 9.4.2 接口的声明 250 9.4.3 接口的扩展与实现 251 9.4.4 Java 8对接口的改进 255 9.4.5 案例:排序接口Sortable 258 9.5 内部类 261 9.5.1 成员内部类 261 9.5.2 案例:汽车与发动机 264 9.5.3 局部内部类 265 9.5.4 匿名内部类 266 9.5.5 案例:排序接口Comparator 268 9.6 枚举 270 9.6.1 使用class定义枚举类 270 9.6.2 使用enum定义枚举类 271 9.6.3 案例:星期枚举类 273 9.7 注解 274 9.7.1 注解的使用 274 9.7.2 元注解 276 9.7.3 自定义注解 277 9.7.4 注解的新特性 278 9.8 案例:不可扩容与可扩容数组容器 280 9.9 本章小结 283 第10章 异常和异常处理 284 10.1 异常体系结构 284 10.1.1 什么是异常 284 10.1.2 异常的分类 284 10.1.3 常见的异常和错误类型 286 10.1.4 异常信息的查看 291 10.2 异常处理 292 10.2.1 try-catch-finally 292 10.2.2 案例:数组元素的查找 296 10.2.3 关键字:throws 298 10.2.4 案例:倒计时几秒 300 10.2.5 关键字:throw 301 10.2.6 案例:取款和存款异常 303 10.2.7 Java 7对异常处理的改进 305 10.3 异常类型的扩展 306 10.3.1 自定义异常类型 306 10.3.2 案例:登录异常 307 10.4 本章小结 308 第11章 常用类 309 11.1 Object类 309 11.1.1 toString方法 310 11.1.2 equals方法 311 11.1.3 hashCode方法 314 11.1.4 getClass方法 316 11.1.5 clone方法 317 11.1.6 finalize方法 318 11.2 包装类 319 11.2.1 数值类型 319 11.2.2 Character类型 321 11.2.3 Boolean类型 322 11.2.4 装箱与拆箱 322 11.2.5 案例:员工信息管理 323 11.2.6 案例:计算两个整数的和 325 11.2.7 包装类的缓存对象 325 11.3 String类 326 11.3.1 字符串的特点 326 11.3.2 字符串对象的内存分析 328 11.3.3 案例:企业面试题 329 11.3.4 String类的常见方法 331 11.3.5 案例:String算法考查 334 11.4 可变字符序列 336 11.4.1 可变字符序列的常用方法 336 11.4.2 字符串与可变字符序列的 区别 338 11.4.3 案例:字符串指定部分反转 340 11.5 Arrays类 341 11.5.1 toString方法:转换字符串 341 11.5.2 sort方法:自然排序 342 11.5.3 sort方法:定制排序 343 11.5.4 binarySearch方法:查找 345 11.5.5 copyOf方法:数组复制 345 11.5.6 equals方法:判断数组的 元素是否相等 345 11.5.7 案例:左奇右偶 346 11.5.8 案例:动态数组 347 11.6 数学相关类 351 11.6.1 Math类 351 11.6.2 BigInteger类 352 11.6.3 BigDecimal类 353 11.6.4 Random类 353 11.6.5 案例:企业面试题 354 11.7 日期类 355 11.7.1 第一代日期类 355 11.7.2 第二代日期类 357 11.7.3 第三代日期类 357 11.8 本章小结 361 第12章 集合 362 12.1 集合概述 362 12.1.1 数组回顾 362 12.1.2 集合框架集 363 12.2 Collection集合 364 12.2.1 Collection集合的方法 364 12.2.2 案例:增加和删除元素 365 12.2.3 foreach循环遍历 367 12.2.4 Iterator迭代器遍历 368 12.2.5 集合元素的删除 370 12.2.6 案例:员工信息管理 371 12.3 List集合 373 12.3.1 List接口的方法 373 12.3.2 案例:元素的增删改查 374 12.3.3 List接口的实现类 375 12.3.4 List集合的遍历 379 12.3.5 案例:企业面试题 380 12.4 Set集合 382 12.4.1 HashSet和LinkedHashSet 382 12.4.2 案例:员工信息管理 382 12.4.3 TreeSet 384 12.4.4 案例:企业面试题 387 12.5 Map集合 388 12.5.1 Map接口的方法 388 12.5.2 Map集合的遍历 389 12.5.3 Map接口的实现类 390 12.5.4 案例:企业面试题 392 12.6 深入源码分析 394 12.6.1 Set的源码分析 394 12.6.2 Iterator的源码分析 395 12.6.3 ArrayList的源码分析 395 12.6.4 LinkedList的源码分析 396 12.6.5 HashMap的源码分析 401 12.6.6 modCount变量 411 12.7 本章小结 411 第13章 泛型 412 13.1 泛型的概念 412 13.1.1 无泛型带来的问题 412 13.1.2 泛型的引入 413 13.2 泛型类或泛型接口 415 13.2.1 泛型类或接口的声明 416 13.2.2 泛型类或接口的使用 417 13.2.3 延续父类或接口的泛型 419 13.2.4 设定泛型的上限 419 13.2.5 案例:矩形对象管理 421 13.2.6 案例:员工信息管理 422 13.2.7 案例:随机验证码 423 13.3 泛型方法 424 13.3.1 泛型方法的声明 424 13.3.2 设定泛型形参的上限 426 13.3.3 案例:数组工具类 427 13.4 类型通配符 429 13.4.1 类型通配符的使用 429 13.4.2 类型通配符的上限 430 13.4.3 类型通配符的下限 431 13.4.4 泛型方法与类型通配符 432 13.5 泛型擦除 435 13.6 泛型嵌套 436 13.7 Collections工具类 438 13.8 案例:企业面试题 439 13.9 本章小结 440 第14章 IO流 441 14.1 File类 441 14.1.1 获取文件或目录信息 441 14.1.2 操作文件 443 14.1.3 操作目录 445 14.1.4 案例:递归列出目录的 下一级 447 14.1.5 案例:递归列出目录下的 所有Java源文件 448 14.1.6 案例:递归删除非空目录 449 14.1.7 案例:获取指定目录的 总大小 450 14.2 IO流的分类和设计 451 14.2.1 IO流类的体系结构 451 14.2.2 常见IO流 452 14.2.3 抽象基类的常用方法 452 14.3 案例演示 454 14.3.1 输出纯文本数据 454 14.3.2 读取纯文本数据 455 14.3.3 按行读取 456 14.3.4 复制文件基本版 456 14.3.5 复制文件提升效率版 457 14.3.6 读写纯文本数据的同时进行 编码和解码 459 14.3.7 操作Java各种数据类型的 数据 461 14.3.8 保存对象 462 14.3.9 按行输出文本内容 465 14.3.10 复制或剪切整个目录 466 14.3.11 IO流使用步骤小结 467 14.4 System类与IO流 468 14.4.1 System类中的IO流 469 14.4.2 Scanner类与IO流 470 14.5 IO流的关闭问题 472 14.5.1 正确关闭IO流 472 14.5.2 新try…catch结构 474 14.6 本章小结 476 第15章 多线程 477 15.1 线程概述 477 15.1.1 进程 478 15.1.2 线程 478 15.2 线程的创建和启动 479 15.2.1 继承Thread类 479 15.2.2 实现Runnable接口 481 15.2.3 二者的区别 482 15.3 线程的生命周期 483 15.4 Thread类的方法 486 15.4.1 获取和设置线程信息 486 15.4.2 线程的控制 488 15.4.3 案例:倒计时 488 15.4.4 案例:线程让步 489 15.4.5 案例:龟兔赛跑 489 15.4.6 案例:守护线程 491 15.4.7 案例:停止线程 492 15.5 线程同步 494 15.5.1 线程安全问题 494 15.5.2 同步代码块 496 15.5.3 同步方法 498 15.5.4 释放锁与否的操作 500 15.5.5 死锁 500 15.6 等待唤醒机制 502 15.6.1 案例:初级快餐店 502 15.6.2 案例:快餐店升级 504 15.6.3 案例:交替打印数字 507 15.7 单例设计模式 508 15.7.1 饿汉式 508 15.7.2 懒汉式 510 15.8 本章小结 512 第16章 网络编程 513 16.1 网络基础知识 513 16.1.1 网络的分类 513 16.1.2 网络协议 514 16.1.3 IP地址 516 16.1.4 端口号 518 16.1.5 URL访问互联网资源 518 16.2 TCP Socket网络编程 521 16.2.1 Socket介绍 522 16.2.2 基于TCP的网络通信程序 结构 523 16.2.3 案例:一个客户端与服务器 端的单次通信 524 16.2.4 案例:多个客户端与服务器 端的多次通信 526 16.2.5 案例:多个客户端上传文件 529 16.2.6 案例:多个客户端群聊 532 16.3 UDP Socket网络编程 538 16.3.1 基于UDP的网络编程 538 16.3.2 案例:用UDP发送消息 539 16.3.3 MulticastSocket多点广播 540 16.3.4 案例:基于MulticastSocket 的群聊 541 16.4 本章小结 543 第17章 反射 544 17.1 类的加载、链接和初始化 544 17.1.1 类的加载 544 17.1.2 类的链接 544 17.1.3 类的初始化 545 17.2 类加载器 548 17.2.1 四种类加载器 549 17.2.2 双亲委托模型 549 17.2.3 自定义类加载器 550 17.2.4 加载资源文件 552 17.3 反射的根源 553 17.3.1 Class类剖析 553 17.3.2 获取类信息 555 17.4 反射的应用 562 17.4.1 动态创建对象 562 17.4.2 动态操作属性 563 17.4.3 动态调用方法 564 17.4.4 动态操作数组 565 17.5 代理设计模式 566 17.5.1 静态代理模式 566 17.5.2 动态代理模式 568 17.6 本章小结 571 第18章 Lambda表达式与Stream API 572 18.1 Lambda表达式 573 18.1.1 Lambda表达式语法 573 18.1.2 案例:实现Comparator接口 574 18.1.3 类型推断 574 18.1.4 Lambda表达式的简化 575 18.2 函数式接口 575 18.2.1 函数式接口的概念 575 18.2.2 案例:消费型接口 577 18.2.3 案例:断定型接口 577 18.2.4 案例:功能型接口 578 18.2.5 案例:员工信息管理 578 18.3 Lambda表达式再简化 580 18.3.1 方法引用 580 18.3.2 构造器引用 582 18.3.3 数组构造引用 583 18.4 强大的Stream API 584 18.4.1 创建Stream对象 585 18.4.2 Stream中间操作 587 18.4.3 终止Stream操作 591 18.5 本章小结 593 第19章 Java 9~Java 17新特性 594 19.1 最新几个Java版本概述 595 19.1.1 新特性简介 595 19.1.2 版本更新说明 597 19.2 语法新特性 597 19.2.1 接口中允许私有方法 599 19.2.2 钻石操作符与匿名内部类 结合 600 19.2.3 try语法改进 600 19.2.4 局部变量类型推断 601 19.2.5 switch语句 603 19.2.6 文本块 607 19.2.7 instanceof支持模式匹配 609 19.2.8 record 610 19.2.9 NullPointerException 612 19.2.10 密封类 613 19.2.11 隐藏类 613 19.3 API改进 614 19.3.1 String类 614 19.3.2 集合相关类 615 19.3.3 Stream API 617 19.3.4 Files及IO流 618 19.3.5 Optional类 619 19.3.6 支持压缩数字格式化 621 19.3.7 支持日期周期格式化 621 19.3.8 @Deprecated注解 622 19.4 其他新特性 622 19.4.1 模块化 622 19.4.2 jshell命令 625 19.4.3 垃圾回收器 627 19.4.4 更简化的编译运行程序 630 19.5 本章小结
你还可能感兴趣
我要评论
|