产品特色
编辑推荐
Java是世界上非常流行的一门功能强大的多平台编程语言,但学习曲线十分陡峭。本书从实际项目着手,针对Java零基础读者,从安装和设置Java开发工具开始,一步步帮你消除Java学习中的拦路虎,让你能够立即开发真实可行的应用程序。
在创建应用的过程中,你将学习:
- 执行计算、操作文本字符串以及生成随机颜色;
- 使用条件、循环和方法让程序简洁且响应迅速;
- 创建函数以重用代码并节省时间;
- 创建图形用户界面元素,包括按钮、菜单、弹出框和滑条;
- 利用Eclipse和Android Studio提供的功能调试代码,发现、修复和避免常见错误。
内容简介
本书是Java 基础教程类图书,通过开发实际的桌面和移动应用,从实战角度指导读者快速上手Java编程。主要内容包括:Java、Eclipse 和Android Studio 的安装与设置,JShell 的用法,条件、循环、方法变量、类等Java 编程概念,函数创建,GUI 构建,代码调试,常见错误的规避。
本书适合所有对Java语言感兴趣的初学者。
作者简介
Bryson Payne
北佐治亚大学计算机科学系终身教授,并曾任该校CEO。从事Java教学工作近20年,深谙教学之道。一直致力于与全球的K-12学校协作以促进计算机科学教育,在Udemy上所开设的安全方面的培训课程吸引了全球150多个国家的数万名学生。
目录
第 1 章 起步 1
1.1 Java 支持Windows、macOS 和Linux 1
1.2 安装Java 8 for Developers 和Java 9 for Developers 2
1.3 安装Eclipse IDE for Java Developers 2
1.4 配置Eclipse 4
1.4.1 安装WindowBuilder Editor 5
1.4.2 定制Eclipse 的外观 6
1.5 安装用于开发移动应用的Android Studio 7
1.6 使用JShell 熟悉Java 8
1.6.1 运行JShell 8
1.6.2 在JShell 中使用Java 表达式 10
1.6.3 在JShell 中声明Java 变量 11
1.6.4 在Java 中打印输出 13
1.6.5 JShell 命令 14
1.7 小结 15
第 2 章 创建猜数游戏 17
2.1 游戏步骤规划 17
2.2 新建Java 项目 18
2.3 创建HiLo 类 19
2.3.1 生成随机数 20
2.3.2 获取来自键盘的用户输入 22
2.3.3 让程序打印输出 24
2.4 循环:反复地询问并检查 25
2.4.1 if 语句:检查合适的条件 26
2.4.2 添加让用户接着玩的循环 29
2.5 测试游戏 31
2.6 小结 34
2.7 编程练习 35
2.7.1 编程练习1:增大范围 35
2.7.2 编程练习2:计算猜测次数 36
2.7.3 编程练习3:玩MadLibs 游戏 36
第3 章 给猜数游戏创建GUI 37
3.1 在JShell 中练手 37
3.1.1 仅用4 行代码创建一个GUI 38
3.1.2 用10 行代码创建一个交互式GUI 39
3.2 在Eclipse 中创建GUI 应用程序 41
3.3 使用Eclipse 的WindowBuilder Editor设计GUI 42
3.4 设计用户界面 43
3.4.1 在Properties 面板中设置GUI属性 44
3.4.2 在Palette 面板中定制GUI组件 45
3.4.3 对齐GUI 元素 47
3.4.4 给GUI 组件命名以方便编写代码 48
3.4.5 将GUI 与Java 代码相关联 49
3.5 添加检查用户猜测的方法 50
3.5.1 获取JTextField 中的文本 51
3.5.2 将字符串转换为数字 52
3.6 开始新游戏 53
3.7 监听用户事件——单击Guess!按钮 54
3.8 设置GUI 窗口 56
3.9 开玩 58
3.10 添加重玩功能 58
3.11 改善用户体验 59
3.11.1 让用户能够按回车键来提交猜测 59
3.11.2 自动删除前一次猜测的数字 60
3.12 处理无效的用户输入 61
3.13 小结 63
3.14 编程练习 64
3.14.1 编程练习1:告诉用户他猜了多少次 64
3.14.2 编程练习2:显示和隐藏Play Again 按钮 64
3.14.3 编程练习3:创建GUI 版MadLib 65
第4 章 创建你的第 一个Android 应用 66
4.1 在Android Studio 中新建项目 67
4.2 在设计视图中创建GUI 布局 71
4.3 在Android Studio 中给GUI 组件命名 74
4.4 在Android Studio 中将GUI 关联到Java 代码 75
4.5 添加检查猜测及开始新游戏的方法 78
4.6 在Android 中处理事件 81
4.7 在Android 模拟器中运行应用 84
4.8 在Android 设备上运行应用 88
4.8.1 准备好设备 88
4.8.2 连接设备 89
4.8.3 在设备上运行应用 89
4.9 改善用户体验 91
4.9.1 让用户在文本框中输入的字数居中 91
4.9.2 添加回车键监听器 91
4.9.3 最后的润色 92
4.10 小结 93
4.11 编程练习 94
4.11.1 编程练习1:指出用户猜了多少次 94
4.11.2 编程练习2:提高视觉吸引力 95
4.11.3 编程练习3:创建移动版MadLibs 游戏 96
第5 章 给应用添加菜单和首选项 97
5.1 在Android 中添加选项菜单 97
5.1.1 在XML 菜单文件中添加菜单项 97
5.1.2 显示选项菜单 98
5.1.3 响应用户选择 99
5.1.4 创建表示About 屏幕的弹出式提醒框 100
5.2 修改猜测范围 101
5.2.1 添加表示范围的变量 101
5.2.2 使用变量range 102
5.2.3 创建让用户选择范围的对话框 103
5.3 存储用户首选项和游戏统计信息 104
5.3.1 存储和获取用户选择的范围 104
5.3.2 存储获胜次数 106
5.4 小结 108
5.5 编程练习 108
5.5.1 编程练习1:有赢有输 108
5.5.2 编程练习2:胜率 109
第6 章 机密信息加密 110
6.1 凯撒加密法 110
6.2 创建应用Secret Messages 111
6.2.1 在Eclipse 中创建项目Secret Messages 111
6.2.2 开始在SecretMessages.java中编写代码 112
6.2.3 打乱字符串 113
6.3 Java 中的字符和值 116
6.4 只加密字母 117
6.5 关闭Scanner 对象 119
6.6 支持自定义密钥值 120
6.7 加密数字 122
6.8 在不使用Eclipse 的情况下运行命令行程序 124
6.8.1 找到你的工作区文件夹 124
6.8.2 打开命令行窗口 125
6.9 小结 127
6.10 编程练习 127
6.10.1 编程练习1:Looping the Loop 127
6.10.2 编程练习2:反转并加密 128
6.10.3 编程练习3:使用try 和catch 妥善地处理密钥 128
第7 章 创建高级GUI 并分享应用 129
7.1 为创建GUI 版Secret Messages 应用新建一个项目 129
7.2 设计GUI 并给组件命名 130
7.3 给GUI 版Secret Messages 应用编写代码 132
7.3.1 创建方法encode() 133
7.3.2 给按钮Encode/Decode 编写事件处理程序 135
7.3.3 处理无效输入和用户错误 136
7.3.4 编写方法main()并运行应用 136
7.4 改进GUI 139
7.4.1 设置换行和折词 141
7.4.2 处理无效输入和用户错误:第 2 部分 142
7.4.3 添加滑条 144
7.5 添加让滑条起作用的代码 146
7.6 以可运行的JAR 文件的方式分享应用 148
7.7 小结 151
7.8 编程练习 151
7.8.1 编程练习1:自动移动加密后的消息 151
7.8.2 编程练习2:添加滚动功能 152
7.8.3 编程练习3:在用户修改文本框内容时相应地调整滑条 153
第8 章 创建移动版Secret Messages应用并与朋友分享 154
8.1 创建移动项目 155
8.2 设计移动GUI 156
8.3 将GUI 关联到Java 代码 160
8.3.1 将按钮Encode/Decode 关联到方法encode() 160
8.3.2 测试应用 163
8.3.3 给SeekBar 编写代码 164
8.4 在模拟器和Android 设备上运行应用 165
8.5 定制浮动操作按钮 167
8.6 接收来自其他应用的信息 169
8.7 小结 172
8.8 编程练习 172
8.8.1 编程练习1:添加Move Up ^按钮 172
8.8.2 编程练习2:修改SeekBar 的属性progress 172
第9 章 使用鼠标绘制五颜六色的气泡 173
9.1 创建项目BubbleDraw 174
9.2 创建框架BubbleDraw 174
9.3 创建表示气泡的类 175
9.3.1 定义气泡 175
9.3.2 设计Bubble 类的方法 177
9.4 将气泡存储在ArrayList 中 180
9.4.1 给BubblePanel 类添加构造函数 181
9.4.2 添加在屏幕上绘图的方法 181
9.4.3 测试BubblePanel 类 183
9.5 处理鼠标事件 185
9.5.1 创建一个可重用的事件监听器 185
9.5.2 处理单击和拖曳 186
9.5.3 处理鼠标滑轮事件 189
9.6 小结 191
9.7 编程练习 191
9.7.1 编程练习1:避免气泡太小 191
9.7.2 编程练习2:PixelDraw 192
第 10 章 添加动画和碰撞检测 194
10.1 通过复制项目BubbleDraw 来创建BubbleDrawGUI 194
10.1.1 重命名主类及其Java 文件 195
10.1.2 指定透明度 196
10.2 添加动画让气泡往上飘 197
10.2.1 添加定时器 197
10.2.2 设置定时器 198
10.2.3 准备动画 199
10.2.4 启动定时器 200
10.3 随机选择速度和方向 200
10.4 为应用创建GUI 203
10.4.1 添加面板和按钮 203
10.4.2 给按钮Clear 和Pause/Start编写事件处理程序 205
10.5 使用碰撞检测让气泡到达窗口边缘后往回弹 206
10.5.1 软性回弹 207
10.5.2 硬性回弹 209
10.6 添加用于控制动画速度的滑条 210
10.6.1 定制滑条 210
10.6.2 实现滑条事件处理程序 211
10.7 小结 213
10.8 编程练习 213
10.8.1 编程练习1:避免气泡呆在原地不动 213
10.8.2 编程练习2:创建应用FlexiDraw 214
10.8.3 编程练习3:PixelDraw 2.0 215
第 11 章 创建Android 多点触控版BubbleDraw 应用 217
11.1 创建项目BubbleDraw 218
11.2 给BubbleView 类编写代码 219
11.2.1 添加实现动画所需的变量 219
11.2.2 创建构造函数BubbleView() 221
11.2.3 准备好布局以使用BubbleView 221
11.3 修改Bubble 类 222
11.4 使用方法onDraw()在Android 中绘图 224
11.5 使用100 个气泡测试BubbleDraw 225
11.5.1 添加方法testBubbles() 225
11.5.2 修复OnTouchListener 的错误 226
11.5.3 运行应用BubbleDraw 227
11.6 在Java 中使用线程化动画和多任务 228
11.7 使用手指触摸来绘画 230
11.7.1 同时使用10 个手指进行多点触控绘画 232
11.7.2 在Android 设备上测试多点触摸事件 232
11.8 修改应用的启动图标 233
11.8.1 创建自定义应用图标 234
11.8.2 将自定义图标添加到应用中 234
11.8.3 显示自定义图标 235
11.8.4 修改应用名称 236
11.9 小结 237
11.10 编程练习 237
11.10.1 编程练习1:区别对待单点触摸事件和多点触摸事件(1) 237
11.10.2 编程练习2:区别对待单点触摸事件和多点触摸事件(2) 237
附录A 调试及避免常见错误 239
《 Java从入门到精通:面向对象的编程思想与实战 》 内容概要: 本书旨在带领读者从零开始,逐步掌握Java这门强大的面向对象编程语言。我们不拘泥于枯燥的语法罗列,而是将重点放在理解Java的核心概念,特别是面向对象的编程思想,并通过大量的实例和项目实践,帮助读者将理论知识转化为实际的编程能力。从最基础的Java环境搭建,到变量、数据类型、运算符、流程控制语句的学习,再到面向对象三大特性——封装、继承、多态的深入剖析,以及集合框架、异常处理、IO流、多线程等进阶主题的讲解,本书力求做到全面而深入。同时,我们将引入一些常用的Java库和框架,如Swing/JavaFX进行GUI开发,JDBC进行数据库操作,以及Spring框架的基础概念,帮助读者了解Java生态系统的广阔天地,并为后续更深入的学习打下坚实的基础。 详细章节介绍: 第一部分:Java基础入门 第一章:Java程序开发环境搭建与初识 1.1 Java的魅力与应用领域: 介绍Java语言的诞生背景、发展历程及其在不同领域(Web开发、企业级应用、移动开发、大数据、嵌入式系统等)的广泛应用,激发读者的学习兴趣。 1.2 JDK、JRE与JVM的深刻理解: 详细阐述Java Development Kit (JDK)、Java Runtime Environment (JRE) 和Java Virtual Machine (JVM) 三者之间的关系与作用,帮助读者建立正确的Java运行机制认知。 1.3 Eclipse/IntelliJ IDEA 开发环境的配置与使用: 指导读者如何安装并配置主流的Java集成开发环境(IDE),如Eclipse或IntelliJ IDEA,讲解IDE的基本操作,包括创建项目、编写代码、编译与运行,为后续编程实践提供便捷工具。 1.4 第一个Java程序——“Hello, World!”: 带领读者编写并运行第一个简单的Java程序,理解程序结构、`public static void main(String[] args)` 方法的作用,以及输出语句的使用,迈出编程的第一步。 1.5 Java程序的编译与执行流程: 深入解析Java源文件(.java)到字节码(.class)的编译过程,以及JVM如何加载并执行字节码,理解跨平台性的原理。 第二章:Java基本语法与数据类型 2.1 标识符、关键字与注释: 学习Java的命名规则(标识符),掌握Java保留关键字的含义与用法,以及不同类型的注释(单行、多行、文档注释)在代码编写中的重要性。 2.2 八种基本数据类型详解: 详细介绍Java的8种基本数据类型(byte, short, int, long, float, double, char, boolean)的取值范围、存储特点和使用场景。 2.3 变量的声明、初始化与使用: 理解变量的概念,学习如何声明、初始化并使用变量,掌握变量的作用域规则。 2.4 整型、浮点型与字符型数据的运算: 讲解算术运算符(+,-,,/,%)、赋值运算符(=, +=, -=等)以及自增自减运算符(++, --)的使用。 2.5 boolean类型与逻辑运算符: 介绍boolean类型及其在条件判断中的作用,学习逻辑运算符(&&, ||, !)和关系运算符(>, <, ==, !=, >=, <=)的用法。 2.6 类型转换:自动类型转换与强制类型转换: 讲解不同数据类型之间进行运算时发生的自动类型转换,以及如何通过强制类型转换来避免数据丢失或精度问题。 第三章:Java流程控制语句 3.1 条件判断语句:if-else、if-else if-else、switch-case: 深入学习`if`、`else if`、`else`语句的嵌套使用,以及`switch-case`语句在多分支选择中的应用,掌握条件判断的逻辑。 3.2 循环语句:for、while、do-while: 详细讲解`for`循环的计数控制,`while`循环的条件判断,以及`do-while`循环的至少执行一次特性,掌握循环的构建与使用。 3.3 循环控制语句:break与continue: 学习`break`语句如何跳出循环,`continue`语句如何跳过当前迭代,以及它们在复杂循环结构中的应用。 3.4 嵌套循环的应用: 通过实例演示嵌套循环在生成表格、矩阵运算、图形绘制等场景下的应用。 第二部分:面向对象编程思想与实践 第四章:Java面向对象编程核心概念 4.1 类与对象的理解: 深入理解类(Class)作为蓝图和对象(Object)作为实例的概念,通过生活中的比喻来阐释类与对象的关联。 4.2 成员变量与成员方法: 学习如何在类中定义成员变量(属性)和成员方法(行为),以及它们如何描述对象的状态和功能。 4.3 构造方法:创建对象的关键: 讲解构造方法的概念、作用,以及如何定义无参构造方法和带参构造方法,理解对象创建的过程。 4.4 `this`关键字的应用: 掌握`this`关键字在区分成员变量与局部变量、调用本类其他构造方法等场景下的用法。 4.5 封装:信息隐藏与数据安全: 详细阐述封装的意义,如何通过访问修饰符(`public`, `private`, `protected`, default)来控制成员的可见性,以及getter和setter方法的应用。 第五章:Java继承与多态 5.1 继承:代码重用与“is-a”关系: 深入理解继承的原理,学习如何使用`extends`关键字实现子类继承父类,掌握父类与子类的关系。 5.2 方法重写(Override): 学习如何覆盖(重写)父类的方法,实现子类对父类行为的个性化定义。 5.3 `super`关键字的应用: 掌握`super`关键字在调用父类构造方法、访问父类成员等方面的用法。 5.4 多态:一种接口,多种实现: 深入理解多态的核心概念,包括向上转型和向下转型,以及多态在程序设计中的优势(灵活性、可扩展性)。 5.5 抽象类与抽象方法: 学习如何定义抽象类和抽象方法,理解它们在规范子类行为、强制实现特定方法方面的作用。 5.6 接口(Interface):定义规范的利器: 详细讲解接口的概念、定义方式,以及接口的实现(`implements`关键字),理解接口在解耦和实现多继承方面的作用。 第六章:Java常用类库与实用工具 6.1 `String`类:字符串处理的精髓: 详细介绍`String`类的常用方法,如字符串的创建、拼接、查找、替换、分割、截取等,以及`StringBuilder`和`StringBuffer`的性能对比。 6.2 `Object`类:万物之源: 讲解`Object`类是所有类的父类,学习其常用方法,如`equals()`, `hashCode()`, `toString()`的重写。 6.3 日期与时间处理:`Date`, `Calendar`, `LocalDate`等: 介绍Java中处理日期和时间的各种类,包括旧的`Date`和`Calendar`,以及Java 8引入的更强大的`java.time`包。 6.4 数学计算:`Math`类: 学习`Math`类提供的常用数学函数,如平方根、幂运算、三角函数、随机数生成等。 第三部分:Java进阶与实战应用 第七章:Java集合框架 7.1 集合框架的体系结构: 介绍Java集合框架(Collections Framework)的整体架构,包括`Collection`接口、`Map`接口及其子接口和实现类。 7.2 `List`接口及其实现类:`ArrayList`与`LinkedList`: 深入理解`List`接口的特点,掌握`ArrayList`(动态数组)和`LinkedList`(链表)的实现原理、性能差异及适用场景。 7.3 `Set`接口及其实现类:`HashSet`与`TreeSet`: 学习`Set`接口不允许重复元素的特性,掌握`HashSet`(哈希表存储)和`TreeSet`(红黑树存储)的应用。 7.4 `Map`接口及其实现类:`HashMap`与`TreeMap`: 讲解`Map`接口(键值对存储)的用法,掌握`HashMap`(哈希表)和`TreeMap`(红黑树)的特点。 7.5 迭代器(Iterator)的使用: 学习如何使用迭代器安全地遍历集合元素,以及`ListIterator`在`List`中的特殊功能。 第八章:Java异常处理机制 8.1 异常的概念与分类: 介绍Java异常的产生原因,以及`Error`(错误)和`Exception`(异常)的区别,并讲解`Exception`的继承体系。 8.2 异常的捕获与处理:`try-catch-finally`: 详细讲解`try`块、`catch`块和`finally`块的组合使用,实现异常的捕获与处理。 8.3 声明异常:`throws`关键字: 学习如何使用`throws`关键字将方法可能产生的异常向上抛出,声明方法的异常类型。 8.4 手动抛出异常:`throw`关键字: 掌握`throw`关键字如何根据业务逻辑主动抛出一个异常对象。 8.5 自定义异常: 指导读者如何创建自己的异常类,以更好地满足特定应用场景的需求。 第九章:Java IO流 9.1 IO流的概述与分类: 介绍IO流的概念,以及字节流(InputStream/OutputStream)和字符流(Reader/Writer)的区别。 9.2 文件操作:`File`类的使用: 学习如何使用`File`类来创建、删除文件和目录,以及获取文件信息。 9.3 字节流的应用: 讲解`FileInputStream`、`FileOutputStream`等类的用法,以及缓冲流(`BufferedInputStream`/`BufferedOutputStream`)如何提高读写效率。 9.4 字符流的应用: 讲解`FileReader`、`FileWriter`等类的用法,以及缓冲流(`BufferedReader`/`BufferedWriter`)如何进行高效的文本读写。 9.5 对象序列化与反序列化: 介绍如何使用`ObjectInputStream`和`ObjectOutputStream`来保存和读取Java对象。 第十章:Java多线程编程 10.1 线程的概念与创建方式: 介绍线程的概念,学习通过继承`Thread`类和实现`Runnable`接口两种方式创建线程。 10.2 线程的生命周期: 讲解线程的创建、就绪、运行、阻塞、终止等生命周期状态。 10.3 线程同步与互斥:`synchronized`关键字: 解决多线程访问共享资源时可能出现的线程安全问题,深入理解`synchronized`关键字的应用。 10.4 线程通信:`wait()`, `notify()`, `notifyAll()`: 学习如何使用这三个方法来实现线程之间的协作与通信。 10.5 线程池:提高线程复用率: 介绍线程池的概念,以及如何使用Java提供的线程池工具来管理线程。 第四部分:Java实战项目入门 第十一章:GUI编程入门:Swing/JavaFX基础 11.1 Swing/JavaFX简介与GUI设计理念: 介绍Java GUI编程的基本概念,以及Swing和JavaFX的优缺点。 11.2 常用组件:`JFrame`, `JPanel`, `JButton`, `JLabel`, `JTextField`等: 学习如何使用Swing/JavaFX提供的基本组件来构建用户界面。 11.3 布局管理器:`FlowLayout`, `BorderLayout`, `GridLayout`等: 掌握不同的布局管理器如何安排组件的位置和大小。 11.4 事件处理:ActionListener接口: 学习如何响应用户的交互操作,如按钮点击、文本输入等。 11.5 简单GUI应用实例: 结合前面学到的知识,实现一个简单的计算器或记事本程序。 第十二章:数据库连接与操作:JDBC入门 12.1 数据库基础概念与JDBC的作用: 介绍关系型数据库的基本概念,以及Java Database Connectivity (JDBC) 在Java程序中连接数据库的作用。 12.2 JDBC驱动的加载与连接: 学习如何加载数据库驱动,并使用`DriverManager`建立数据库连接。 12.3 SQL语句的执行:`Statement`与`PreparedStatement`: 讲解如何使用`Statement`和`PreparedStatement`执行SQL查询和更新语句。 12.4 `ResultSet`结果集的处理: 学习如何遍历和处理SQL查询返回的结果集。 12.5 事务管理: 介绍数据库事务的概念,以及如何在JDBC中进行事务的提交和回滚。 12.6 简单数据库应用实例: 实现一个简单的图书管理系统,能够实现图书的增、删、改、查等基本操作。 第十三章:Spring框架基础概念(初步涉猎) 13.1 Spring框架的意义与核心概念: 简单介绍Spring框架在Java企业级开发中的重要性,以及IoC(控制反转)和DI(依赖注入)这两个核心概念。 13.2 Bean的创建与管理: 了解Spring如何管理Java对象(Bean)。 13.3 AOP(面向切面编程)简介: 简单介绍AOP的概念,理解其在日志记录、权限控制等方面的应用。 总结与展望: 本书通过理论讲解与实践相结合的方式,力求让读者全面而深入地掌握Java编程技术。我们不仅关注语法细节,更强调面向对象编程思想的理解与应用,并通过一系列实战项目,帮助读者将所学知识融会贯通。希望本书能成为您踏入Java开发世界的一块坚实基石,为您在更广阔的Java生态系统中探索和发展提供有力的支持。