新書推薦:
《
SDGSAT-1卫星热红外影像图集
》
售價:NT$
2030.0
《
股市趋势技术分析(原书第11版)
》
售價:NT$
1010.0
《
汉匈战争全史
》
售價:NT$
454.0
《
恶的哲学研究(社会思想丛书)
》
售價:NT$
500.0
《
当你沉默时(悬疑推理 反PUA 反家暴 女性独立小说,揭秘情感PUA的真相,女性自我救赎的文学典范)
》
售價:NT$
255.0
《
不止江湖
》
售價:NT$
449.0
《
天才留步!——从文艺复兴到新艺术运动(一本关于艺术天才的鲜活故事集,聚焦艺术史的高光时刻!)
》
售價:NT$
704.0
《
双城史
》
售價:NT$
505.0
|
內容簡介: |
本书是《疯狂Java讲义》第6版的上册,第6版保持了前5版系统、全面、讲解浅显、细致的特性,全面新增介绍了Java 12到Java 17的新特性。《疯狂Java讲义》第6版深入介绍了Java编程的相关方面,上、下册内容覆盖了Java的基本语法结构、Java的面向对象特征、Java集合框架体系、Java泛型、异常处理、Java GUI编程、JDBC数据库编程、Java注释、Java的IO流体系、Java多线程编程、Java网络通信编程和Java反射机制,覆盖了java.lang、java.util、java.text、java.io和java.nio、java.sql、java.awt、javax.swing包下绝大部分的类和接口。第6版重点介绍了Java的模块化系统,还详细介绍了Java 12到Java 17引入的块字符串,instanceof的模式匹配,增强型switch语句、switch表达式及模式匹配,密封类,Record类,以及Java 12到Java 17新增的各种API功能。与前5版类似,第6版并不单纯地从知识角度来讲解Java,而是从解决问题的角度来介绍Java语言,所以涉及大量实用案例开发:五子棋游戏、梭哈游戏、仿QQ的游戏大厅、MySQL企业管理器、仿EditPlus的文本编辑器、多线程、断点下载工具、Spring框架的IoC容器……这些案例既能让读者巩固每章所学的知识,又可以让读者学以致用,激发编程自豪感,进而引爆内心的编程激情。第6版相关资料包中包含书中所有示例的代码和《疯狂Java实战演义》的所有项目代码,这些项目可以作为本书课后练习题的“非标准答案”。如果读者需要获取关于课后练习题的解决方法、编程思路,可关注“疯狂讲义”微信服务号,加入读者微信群后,与作者及本书庞大的读者群相互交流。《疯狂Java讲义》为所有打算深入掌握Java编程的读者而编写,适合各种层次的Java学习者和工作者阅读,也适合作为大专院校、培训机构的Java教材。
|
關於作者: |
李刚,十余年软件开发从业经验,疯狂软件教育中心教学总监。疯狂Java实训营创始人,疯狂Java体系原创图书作者。广东技术师范学院计算机科学系兼职副教授,CSDN特邀讲师。培训的学生已在腾讯、阿里、华为、IBM、网易、唯品会、电信盈科等名企就职。国内知名高端IT技术图书作家,已出版《疯狂Java讲义》《疯狂Spring Boot终极讲义》《疯狂Android讲义》《轻量级Java EE企业应用实战》《疯狂前端开发讲义》《疯狂HTML5/CSS3/讲义》等著作。其中疯狂Java体系图书均已沉淀多年,赢得极高的市场认同,多次重印,多部著作印刷数量超过10万册,并被多所“985”“211”院校选作教材,部分图书已被翻译成繁体中文版,授权到宝岛台湾。
|
目錄:
|
第1章 Java语言概述与开发环境1.1 Java语言的发展简史1.2 Java程序运行机制1.2.1 高级语言的运行机制1.2.2 Java程序的运行机制和JVM1.3 开发Java程序的准备1.3.1 下载和安装Java 17的JDK不是说JVM是运行Java程序的虚拟机吗?那JRE和JVM的关系是怎样的呢?1.3.2 JDK 17增强的安装器与PATH环境变量为什么选择用户变量?用户变量与系统变量有什么区别?1.4 第一个Java程序1.4.1 编辑Java源代码1.4.2 编译Java程序当编译C程序时,不仅需要指定存放目标文件的位置,而且需要指定目标文件的文件名,这里使用javac编译Java程序时怎么不需要指定目标文件的文件名呢?1.4.3 运行Java程序1.4.4 根据CLASSPATH环境变量定位类1.5 Java程序的基本规则1.5.1 Java程序的组织形式1.5.2 Java源文件的命名规则1.5.3 初学者容易犯的错误1.6 交互式工具:jshell1.7 Java 17改进的垃圾回收器1.8 何时开始使用IDE工具我想学习Java编程,到底是学习Eclipse好,还是学习IntelliJ IDEA好呢?1.9 本章小结本章练习第2章 理解面向对象2.1 面向对象2.1.1 结构化程序设计简介2.1.2 程序的三种基本结构2.1.3 面向对象程序设计简介2.1.4 面向对象的基本特征2.2 UML介绍2.2.1 用例图2.2.2 类图2.2.3 组件图2.2.4 部署图2.2.5 顺序图2.2.6 活动图2.2.7 状态机图2.3 Java的面向对象特征2.3.1 一切都是对象2.3.2 类和对象2.4 本章小结第3章 数据类型和运算符3.1 注释3.1.1 单行注释和多行注释3.1.2 文档注释API文档是什么?为什么要学习查看API文档的方法?3.2 变量与数据类型分类什么是变量?变量有什么用?3.3 标识符和关键字3.3.1 分隔符3.3.2 标识符规则3.3.3 Java关键字3.4 基本数据类型3.4.1 整型3.4.2 字符型什么是字符集?3.4.3 浮点型3.4.4 在数值中使用下画线分隔3.4.5 布尔型3.4.6 使用var定义变量3.5 基本类型的类型转换3.5.1 自动类型转换3.5.2 强制类型转换3.5.3 表达式类型的自动提升3.6 直接量3.6.1 直接量的类型3.6.2 直接量的赋值3.6.3 Java 17增加的块字符串3.7 运算符3.7.1 算术运算符3.7.2 赋值运算符3.7.3 位运算符3.7.4 扩展后的赋值运算符3.7.5 比较运算符3.7.6 逻辑运算符3.7.7 三目运算符3.7.8 运算符的结合性和优先级3.8 本章小结本章练习第4章 流程控制与数组4.1 顺序结构4.2 分支结构4.2.1 if条件语句4.2.2 传统switch分支语句4.2.3 Java 17的新式switch语句4.2.4 Java 17新增的switch表达式4.3 循环结构4.3.1 while循环语句4.3.2 do while循环语句4.3.3 for循环4.3.4 嵌套循环4.4 控制循环结构4.4.1 使用break结束循环4.4.2 使用continue忽略本次循环剩下的语句4.4.3 使用return结束方法4.5 数组类型4.5.1 理解数组:数组也是一种类型int[]是一种数据类型吗?怎么使用这种类型呢?4.5.2 定义数组4.5.3 数组的初始化能不能只分配内存空间,不赋初始值呢?4.5.4 使用数组为什么要记住这些异常信息?4.5.5 foreach循环4.6 深入数组4.6.1 内存中的数组为什么有栈内存和堆内存之分?4.6.2 基本类型数组的初始化4.6.3 引用类型数组的初始化4.6.4 没有多维数组我是否可以让图4.13中灰色覆盖的数组元素再次指向另一个数组?这样不就可以扩展成三维数组,甚至扩展成更多维的数组吗?4.6.5 操作数组的工具类:Arrays4.6.6 数组应用举例4.7 本章小结本章练习第5章 面向对象(上)5.1 类和对象5.1.1 定义类构造器不是没有返回值吗?为什么不能用void声明呢?5.1.2 对象的产生和使用5.1.3 对象、引用和指针5.1.4 对象的this引用5.2 方法详解5.2.1 方法的所属性5.2.2 方法的参数传递机制5.2.3 形参个数可变的方法5.2.4 递归方法5.2.5 方法重载为什么方法的返回值类型不能用于区分重载的方法?5.3 成员变量和局部变量5.3.1 成员变量和局部变量分类5.3.2 成员变量的初始化和内存中的运行机制5.3.3 局部变量的初始化和内存中的运行机制5.3.4 变量的使用规则5.4 隐藏和封装5.4.1 理解封装5.4.2 使用访问控制符5.4.3 package、import和import static5.4.4 Java的常用包5.5 深入构造器5.5.1 使用构造器执行初始化构造器是创建Java对象的途径,是不是说构造器完全负责创建Java对象?5.5.2 构造器重载为什么要用this来调用另一个重载的构造器?我把另一个构造器中的代码复制到这个构造器中不就可以了吗?5.6 类的继承5.6.1 继承的特点5.6.2 重写父类的方法5.6.3 super限定5.6.4 调用父类构造器为什么我在创建Java对象时从未感觉到java.lang.Object类的构造器被调用过?5.7 多态5.7.1 多态性5.7.2 引用变量的强制类型转换5.7.3 instanceof运算符5.7.4 Java 17为instanceof增加的模式匹配5.7.5 Java 17为switch增加的模式匹配5.8 继承与组合5.8.1 使用继承的注意点5.8.2 利用组合实现复用当使用组合关系实现复用时,需要创建两个Animal对象,这是不是意味着使用组合关系时系统开销更大?5.9 初始化块5.9.1 使用初始化块5.9.2 实例初始化块和构造器5.9.3 类初始化块5.10 本章小结本章练习第6章 面向对象(下)6.1 包装类Java为什么要对这些数据进行缓存呢? 6.2 处理对象6.2.1 打印对象和toString方法6.2.2 ==和equals方法上面程序中在判断obj是否为Person类的实例时,为何不用obj instanceof Person来判断呢?6.3 类成员6.3.1 理解类成员6.3.2 单例类6.4 final修饰符6.4.1 final成员变量6.4.2 final局部变量6.4.3 使用final修饰基本类型变量和引用类型变量的区别6.4.4 可执行“宏替换”的final变量6.4.5 final方法6.4.6 final类6.4.7 不可变类6.4.8 缓存实例的不可变类6.5 抽象类6.5.1 抽象方法和抽象类6.5.2 抽象类的作用6.6 改进后的接口6.6.1 接口的概念6.6.2 改进后的接口定义6.6.3 接口的继承6.6.4 使用接口6.6.5 接口和抽象类6.6.6 面向接口编程6.7 内部类6.7.1 Java 17改进的非静态内部类非静态内部类对象和外部类对象的关系是怎样的?6.7.2 静态内部类为什么静态内部类的实例方法也不能访问外部类的实例变量呢?在接口里是否可以定义内部接口?6.7.3 使用内部类既然内部类是外部类的成员,那么是否可以为外部类定义子类,在子类中再定义一个内部类来重写其父类中的内部类呢?6.7.4 局部内部类6.7.5 匿名内部类6.8 Lambda表达式6.8.1 Lambda表达式入门6.8.2 Lambda表达式与函数式接口6.8.3 在Lambda表达式中使用var6.8.4 方法引用与构造器引用6.8.5 Lambda表达式与匿名内部类的联系和区别6.8.6 使用Lambda表达式调用Arrays的类方法6.9 枚举类6.9.1 手动实现枚举类6.9.2 枚举类入门6.9.3 枚举类的成员变量、方法和构造器6.9.4 实现接口的枚举类枚举类不是用final修饰了吗?怎么还能派生子类呢?6.9.5 包含抽象方法的枚举类6.10 Java 17引入的密封类6.10.1 密封类与其子类6.10.2 密封类与类型转换6.10.3 密封接口6.10.4 密封类与switch模式匹配6.11 Java 17引入的Record类6.11.1 Record类入门6.11.2 Record类的构造器6.11.3 局部Record类6.12 对象与垃圾回收6.12.1 对象在内存中的状态6.12.2 强制垃圾回收6.12.3 finalize方法6.12.4 对象的软引用、弱引用和虚引用6.13 修饰符的适用范围6.14 多版本JAR包6.14.1 jar命令详解6.14.2 创建可执行的JAR包6.14.3 关于JAR包的技巧6.15 本章小结本章练习第7章 Java基础类库7.1 与用户互动7.1.1 运行Java程序的参数7.1.2 使用Scanner获取键盘输入7.2 系统相关类7.2.1 Java 17增强的System类7.2.2 Runtime类与ProcessHandle7.3 常用类7.3.1 Object类7.3.2 操作对象的Objects工具类7.3.3 使用Optional操作可空值7.3.4 String、StringBuffer和StringBuilder类7.3.5 Math类7.3.6 ThreadLocalRandom与Random7.3.7 BigDecimal类7.4 日期、时间类7.4.1 Date类7.4.2 Calendar类7.4.3 Java 17增强的新式日期、时间包7.5 正则表达式7.5.1
|
|