前言
随着Web技术的不断更迭,Java语言与时俱进,不断推陈出新,在互联网行业占据了重要地位。Java在TIOBE、RedMonk、PyPL等全球知名的编程语言排行榜上长期稳居前三,并多次占据排行榜首位,广泛应用于Web后端开发、移动端开发、大数据分析、人工智能等热门领域。
随着Java开发人员及Java社区的不断壮大,Java早已不再是简简单单的一门编程语言了,它更是一个开放的平台、一种共享的文化、一个庞大的社区。IDC的2020年报告显示:全球69%的全职开发人员在使用Java,比其他任何编程语言都要多。
Java语言的语法比较简单,对于初学者来说是一门极友好的语言。如果你想进入IT行业做程序员,选择Java作为敲门砖无疑是正确的选择。
本书由具有多年Java开发与教学经验的一线讲师团队共同创作完成,并反复打磨、精益求精。本书内容全面、讲解细致、通俗易懂、深入浅出,完美契合零基础学习者,并针对初学者学习过程中易出现的问题做了详尽剖析。在知识点讲解过程中,理论结合实践,层层深入,步步为营,精心设计了企业开发中大量经典和实用的案例,讲练一体化,即便零基础的初学者也可以循序渐进,由理论到实践逐步掌握Java开发技术,并建立起面向对象的编程思想。深度方面,本书还具有数据结构、设计模式、JVM、Java最新版本新特性等内容,可以开拓视野、加深内功。此外,本书也同样适合中高级Java开发人员作为工具书使用。
全书分为19章,内容分为四大部分,第一部分介绍了Java编程语言的基础知识,包括Java语言的基础语法、流程控制语句结构、数组,以及主流编程工具的使用等;第二部分详细介绍了Java编程语言的核心知识,即面向对象编程基础/进阶/高级、异常和异常处理等;第三部分重点讲解Java的各种应用场景,涉及常用类、集合、泛型、IO流、多线程、网络编程、反射等;第四部分则是关注Java8~Java17版本的新特性,从语法层面变化、API层面增删变化、GC等底层设计的变化等四个方面进行的阐述。
本书配套视频及后续深入学习的Java视频,可关注尚硅谷教育公众号,在聊天窗口发送“JavaBook”免费获取,也可在哔哩哔哩搜索尚硅谷官方账号,免费在线学习。
感谢电子工业出版社的李冰编辑,是您的努力让本书得以付梓面世。
关于我们
尚硅谷是一家专业的IT教育培训机构,现拥有北京、深圳、上海、武汉、西安五处分校,开设有JavaEE、大数据、HTML5前端、UI/UE设计等多门学科,累计发布的视频教程近三千小时,广受赞誉。尚硅谷通过面授课程、视频分享、在线学习、直播课堂、图书出版等多种方式,满足了全国编程爱好者对多样化学习场景的需求。
尚硅谷一直坚持“技术为王,课比天大”的发展理念,设有独立的研究院,与多家互联网大厂的研发团队保持技术交流,坚持聘用名校名企的技术专家进行技术讲解,以保障教学内容始终基于研发一线。
我们希望通过我们的努力,帮助更多需要帮助的人,让天下没有难学的技术,并为中国的软件人才培养事业尽一点绵薄之力。
尚硅谷教育
商品简介
本书分为四大部分:第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语言的核心机制之JVM6
1.6 Java语言的开发环境和运行环境7
1.7 本章小结8
第2章 第一个Java程序:HelloWorld9
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…else70
4.2.1 单分支条件判断if70
4.2.2 案例:2月份的总天数71
4.2.3 双分支条件判断if…else71
4.2.4 案例:平年、闰年72
4.2.5 多分支条件判断if…else if72
4.2.6 案例:征婚74
4.2.7 案例:解方程75
4.3 分支结构之switch-case76
4.3.1 分支结构switch-case76
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 IDEA128
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 什么是JavaBean198
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 案例:排序接口Sortable258
9.5 内部类261
9.5.1 成员内部类261
9.5.2 案例:汽车与发动机264
9.5.3 局部内部类265
9.5.4 匿名内部类266
9.5.5 案例:排序接口Comparator268
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-finally292
10.2.2 案例:数组元素的查找296
10.2.3 关键字:throws298
10.2.4 案例:倒计时几秒300
10.2.5 关键字:throw301
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和LinkedHashSet382
12.4.2 案例:员工信息管理382<
以下为对购买帮助不大的评价