梦里寻她千百度,千呼万唤始出来。从决定开始写这本书,到最终出版上市,数数已经是第三个夏天了。今年疫情有点紧,各行各业都受到影响,多亏出版社各位老师东奔西走,总算排除了万般艰难险阻,这才有了《好好学Java 从零基础到项目实战》的顺利上市。又是一本600页的编程书籍,拿在手中沉甸甸的,感觉两年的辛劳和等待终于没有白费。感谢这个伟大的时代给人激情澎湃,感谢清华社的老师在芸芸众生中发掘人才,让程序员也有机会成为技术作家,感谢我的家人始终如一的支持和关怀,使我能够集中精力写完本书。
先来看看《好好学Java 从零基础到项目实战》的封面,这个设计老少咸宜,很有内涵。

上一本著作《Android Studio开发实战 从零基础到App上线》问世之后,陆续有读者反映自己没学过Java,或者只掌握了Java的一点皮毛,导致学习该书颇显吃力。当时对这部分读者的建议是先打好Java基础,可是选用一本合适的Java入门书籍并不容易,虽然Java编程一直都是出版热点,且不说国外的众多Java技术经典,单说国内的培训机构就已推出了大量Java书籍。不过市面上已有的Java图书,要么论述各种思想,要么直接教人怎么写代码,少有系统地介绍为什么要编程,对零基础的读者来说还是有些费劲。加上出版社老师的盛情约稿,于是打算重新写一部适合中国人的Java编程书籍,经过一年多的笔耕不辍、寒来暑往,这才有了现在这本《好好学Java 从零基础到项目实战》。
好好学Java,重在有趣味,如果索然乏味就没法好好地学习。《好好学Java 从零基础到项目实战》把各种奇闻轶事穿插在Java知识点当中,从而激发读者的好奇心,利用刚刚掌握的Java开发技能去探索前人遗留的彩蛋。比如大家会看到,牛顿除了发现物理上的万有引力定律,还发现了数学上的牛顿迭代法;刘徽是怎么利用割圆术计算圆周率的;韩信带兵打仗究竟有什么锦囊妙计;比千年虫更严重的1582年问题是怎么产生的等等。在这些历史故事背后,Java编程又是怎么解决问题的,在问题的出现与解决过程之中,你会发现原来Java从一诞生就跟人类历史有着千丝万缕的联系。
一部Java教程必须与时俱进,因此本书使用最流行IDEA作为Java开发环境,同时基于Java11展开编程讲解,其中介绍了Java8之后的若干热门技术,包括但不限于:函数式编程、Lambda表达式、方法引用、流式处理、本地日期时间、NIO、JavaFX、HttpClient等等。当然也包括传统的面向对象三要素(封装/继承/多态)、面向对象的应用(容器/泛型/文件IO)、面向对象的特殊处理(异常/反射/注解)、Java编程的高级开发(多线程/网络通信/数据库操作),各章末尾基本都给出了几个实战练习,最后三章更是提供了三个综合性实战项目:打地鼠游戏、即时聊天工具、诗歌管理系统等,帮助读者在实战中巩固和提升Java开发技能。
除此之外,还有更多精彩花絮等您发现。
下面是《好好学Java 从零基础到项目实战》的目录
第1章  Java开发环境搭建
1.1  JDK的安装和配置
1.1.1  Java的发展历程
1.1.2  下载和安装JDK
1.1.3  配置环境变量
1.2  Intellij  IDEA的安装与配置
1.2.1  安装Intellij  IDEA
1.2.2  配置Intellij  IDEA
1.2.3  运行第一个Java程序
1.3  Java虚拟机(JVM)
1.3.1  Java程序的运行机制
1.3.2  JVM的体系结构
1.3.3  JVM、JRE与JDK的区别
1.4  Java编程的基本概念
1.4.1  Java的代码结构
1.4.2  Java的特殊官吏
1.4.3  Java的度量衡
1.5  小结
第2章  数学运算
2.1  数值变量
2.1.1  数值变量的类型
2.1.2  特殊数字的表达
2.1.3  强制类型转换
2.2  算术运算
2.2.1  四则运算符
2.2.2  赋值运算符
2.2.3  一元运算符
2.3  数学函数
2.3.1  取整函数
2.3.2  取随机数
2.3.3  科学计算函数
2.3.4  三角函数
2.4  实战练习
2.4.1  利用牛顿迭代法求平方根
2.4.2  利用割圆术求解圆周率
2.5  小结
第3章  逻辑控制
3.1  逻辑运算
3.1.1  布尔类型及其运算
3.1.2  关系运算符
3.1.3  运算符的优先级顺序
3.1.4  按位逻辑与短路逻辑
3.2  控制语句
3.2.1  条件分支
3.2.2  多路分支
3.2.3  while循环
3.2.4  for循环
3.3  数组
3.3.1  一维数组
3.3.2  二维数组
3.3.3  冒号的几种用法
3.3.4  数组工具Arrays
3.4  实战练习
3.4.1  求解鸡兔同笼问题
3.4.2  求解韩信点兵问题
3.4.3  利用二分查找法定位数组元素
3.5  小结
第4章  方法包装
4.1  方法定义
4.1.1  方法的组成形式
4.1.2  方法的输入参数
4.1.3  方法的输出参数
4.2  基本类型包装
4.2.1  数值类型包装
4.2.2  包装变量的运算
4.2.3  布尔类型包装
4.3  大数字类型
4.3.1  大整数BigInteger
4.3.2  大小数BigDecimal
4.4  实战练习
4.4.1  通过方法递归实现阶乘函数
4.4.2  利用牛顿迭代法求大数开方
4.4.3  利用大数字求更精确的圆周率
4.5  小结
第5章  字符串
5.1  字符
5.1.1  字符类型
5.1.2  字符型与整型相互转化
5.1.3  字符包装类型
5.2  字符串
5.2.1  字符串的赋值与转换
5.2.2  字符串的格式化
5.2.3  其他常见的字符串方法
5.3  正则表达式
5.3.1  利用正则串分割字符串
5.3.2  利用正则表达式校验字符串
5.4  实战练习
5.4.1  从地址串中解析收件人信息
5.4.2  校验身份证号码的合法性
5.5  小结
第6章  日期时间
6.1  日期工具Date
6.1.1  日期工具的用法
6.1.2  日期时间的格式化
6.2  日历工具Calendar
6.2.1  日历工具的用法
6.2.2  日历工具的常见应用
6.3  Java8的本地日期时间工具
6.3.1  本地日期LocalDate和本地时间LocalTime
6.3.2  本地日期时间与字符串的互相转换
6.4  实战练习
6.4.1  从1582年问题浅谈Date工具的局限
6.4.2  利用本地日期时间实现万年历
6.5  小结
第7章  类的三要素
7.1  类的封装
7.1.1  类的成员定义
7.1.2  类的构造方法
7.1.3  自身:关键字this的用法
7.2  类的继承
7.2.1  类的简单继承
7.2.2  父类:关键字super的用法
7.2.3  几种开放性修饰符
7.3  类的多态
7.3.1  多态的发生场景
7.3.2  对象的类型检查
7.3.3  终态:关键字final的用法
7.4  实战练习:定义银行的账户类
7.5  小结
第8章  特殊的类
8.1  类的嵌套
8.1.1  内部类和嵌套类
8.1.2  静态:关键字static的用法
8.1.3  枚举类型
8.2  类的抽象
8.2.1  抽象类
8.2.2  简单接口
8.2.3  Java8之后的扩展接口
8.2.4  匿名内部类
8.3  函数式编程
8.3.1  Lambda表达式
8.3.2  函数式接口的定义
8.3.3  双冒号标记的方法引用
8.3.4  静态方法引用和实例方法引用
8.4  实战练习
8.4.1  实现建造者模式
8.4.2  实现单例模式
8.5  小结
第9章  容器与泛型
9.1  容器的种类
9.1.1  集合:HashSet和TreeSet
9.1.2  映射:HashMap和TreeMap
9.1.3  清单:ArrayList和LinkedList
9.2  泛型的规则
9.2.1  从泛型方法探究泛型的起源
9.2.2  泛型类的定义及其运用
9.2.3  Java8新增的几种泛型接口
9.3  容器的加工
9.3.1  容器与数组互转
9.3.2  容器工具Collections
9.3.3  Java8新增的流式处理
9.4  实战练习
9.4.1  利用泛型实现通用的二分查找算法
9.4.2  借助容器实现两种常见的排队算法
9.5  小结
第10章  类的进阶用法
10.1  异常
10.1.1  常见的程序异常
10.1.2  内存溢出的两种错误
10.1.3  异常的处理:扔出与捕捉
10.1.4  如何预防异常的产生
10.1.5  使用Optional规避空指针异常
10.2  反射
10.2.1  面向对象的后门——反射
10.2.2  利用反射技术操作私有属性
10.2.3  利用反射技术操作私有方法
10.3  注解
10.3.1  如何使用系统自带的注解
10.3.2  注解的基本单元——元注解
10.3.3  利用注解技术检查空指针
10.4  小结
第11章  文件I/O处理
11.1  文件读写
11.1.1  文件与目录的管理
11.1.2  字符流读写
11.1.3  缓冲区读写
11.1.4  随机访问文件的读写
11.2  I/O输入输出流
11.2.1  文件I/O字节流
11.2.2  缓存I/O字节流
11.2.3  对象序列化
11.2.4  I/O流处理简单的数据压缩
11.3  NIO文件编程
11.3.1  文件通道FileChannel
11.3.2  字节缓存ByteBuffer
11.3.3  文件通道的性能优势
11.3.4  路径工具Paths和Files
11.4  实战练习:文件的分割与合并
11.5  小结
第12章  AWT界面编程
12.1  AWT的窗口面板
12.1.1  框架Frame
12.1.2  按钮Button
12.1.3  布局Layout
12.2  AWT的文本控件
12.2.1  标签Label
12.2.2  输入框TextField和TextArea
12.2.3  选择框Checkbox
12.3  AWT的图像处理
12.3.1  自定义图像视图
12.3.2  绘图工具Graphics
12.3.3  利用Graphics2D加工图像
12.4  实战练习:生成验证码图片
12.5  小结
第13章  Swing界面编程
13.1  Swing的基础界面
13.1.1  框架JFrame和按钮JButton
13.1.2  标签JLabel
13.1.3  利用标签显示图像
13.2  Swing的简单控件
13.2.1  输入框的种类
13.2.2  选择框的种类
13.2.3  列表框的种类
13.3  Swing的高级控件
13.3.1  表格JTable
13.3.2  基本对话框
13.3.3  文件对话框
13.4  实战练习
13.4.1  简单的登录界面
13.4.2  将Java代码导出jar包
13.5  小结
第14章  JavaFX界面编程
14.1  JavaFX的基本场景
14.1.1  JavaFX的初始配置
14.1.2  窗格Pane
14.1.3  标签Label
14.1.4  箱子HBox和VBox
14.2  JavaFX的常用控件
14.2.1  输入框的种类
14.2.2  选择框的种类
14.2.3  列表与表格
14.2.4  对话框的种类
14.3  JavaFX的布局设计
14.3.1  FXML布局的基本格式
14.3.3  实现FXML对应的控制器
14.3.2  FXML布局的伸展适配
14.4  实战练习
14.4.1  房贷计算器(简易版)
14.4.2  JavaFX导出可执行程序
14.4.3  房贷计算器(完整版)
14.5  小结
第15章  多线程
15.1  线程的调度
15.1.1  线程的基本用法
15.1.2  任务Runnable
15.1.3  过程Callable
15.1.4  定时器与定时任务
15.2  并发的控制
15.2.1  同步:关键字synchronized的用法
15.2.2  通过加解锁避免资源冲突
15.2.3  信号量Semaphore的请求与释放
15.2.4  线程间的通信方式
15.3  线程池管理
15.3.1  普通线程池
15.3.2  定时器线程池
15.3.3  分治框架Fork/Join
15.4  实战练习
15.4.1  秒表计时器
15.4.2  打地鼠游戏
15.5  小结
第16章  网络通信
16.1  网络交互的数据格式
16.1.1  URL地址的组成格式
16.1.2  JSON串的解析
16.1.3  XML报文的解析
16.2  HTTP接口访问
16.2.1  GET方式的HTTP调用
16.2.2  POST方式的HTTP调用
16.2.3  Java11新增的HttpClient
16.2.4  HttpClient实现下载与上传
16.3  套接字Socket通信
16.3.1  利用Socket传输文本
16.3.2  使用Socket传输文件
16.3.3  采用UDP协议的Socket通信
16.3.4  利用HttpServer搭建简易服务器
16.4  实战练习
16.4.1  HTTP测试工具
16.4.2  让Java程序输出日志文件
16.4.3  多人即时通信——仿QQ聊天
16.5  小结
第17章  数据库操作
17.1  MySQL环境搭建
17.1.1  安装MySQL数据库
17.1.2  安装MySQL工作台
17.1.3  数据库操纵语言SQL的用法
17.2  JDBC编程
17.2.1  JDBC的应用原理
17.2.2  通过JDBC管理数据库
17.2.3  通过JDBC查询数据记录
17.2.4  预报告PreparedStatement
17.3  数据库连接池
17.3.1  C3P0连接池
17.3.2  Druid连接池
17.4  实战练习
17.4.1  代码生成工具
17.4.2  让Java程序读取配置文件
17.4.3  诗歌管理系统——古诗三百首
17.5  小结

最后附几个本书的购买链接:
京东购书    当当购书

有关本书的源码下载和内容咨询,可加入QQ群667226823
 

更多推荐

《好好学Java 从零基础到项目实战》姗姗而来