×
超值优惠券
¥50
100可用 有效期2天

全场图书通用(淘书团除外)

关闭
JAVA 开发从入门到精通(第2版)

JAVA 开发从入门到精通(第2版)

1星价 ¥50.1 (4.6折)
2星价¥50.1 定价¥109.0

温馨提示:5折以下图书主要为出版社尾货,大部分为全新(有塑封/无塑封),个别图书品相8-9成新、切口有划线标记、光盘等附件不全详细品相说明>>

图文详情
  • ISBN:9787115504104
  • 装帧:一般胶版纸
  • 册数:暂无
  • 重量:暂无
  • 开本:其他
  • 页数:648
  • 出版时间:2018-03-01
  • 条形码:9787115504104 ; 978-7-115-50410-4

本书特色

本书专门介绍Java编程,主要内容包括:Java基础知识、Java语法基础、条件语句、循环语句、数组、Java面向对象编程、集合、常用的类库、泛型、异常处理、I/O文件处理和流程、AWT、Swing、JavaFX基础知识、UI组件、事件处理程序、基于JavaFX框架的Web和多媒体开发、数据库编程、网络与通信编程、多线程和进程等。本书适合Java开发人员阅读,也适合计算机相关专业的师生阅读。

内容简介

本书专门介绍Java编程,主要内容包括:Java基础知识、Java语法基础、条件语句、循环语句、数组、Java面向对象编程、集合、常用的类库、泛型、异常处理、I/O文件处理和流程、AWT、Swing、JavaFX基础知识、UI组件、事件处理程序、基于JavaFX框架的Web和多媒体开发、数据库编程、网络与通信编程、多线程和进程等。本书适合Java开发人员阅读,也适合计算机相关专业的师生阅读。

目录

目  录



第 1章 计算机基础和Java开发入门 1

1.1 计算机基础 2

1.1.1 中央处理器 2

1.1.2 比特和字节 2

1.1.3 二进制 3

1.1.4 编码格式 3

1.2 初识Java 4

1.2.1 何谓Java 4

1.2.2 Java的特点 5

1.2.3 Java的地位 5

1.3 技术解惑 6

1.3.1 对初学者的建议 6

1.3.2 理解Java的垃圾回收

机制 6

1.3.3 充分利用Java API文档 7

1.4 课后练习 7

第 2章 第 一段Java程序 8

2.1 搭建Java开发环境 9

2.1.1 安装JDK 9

2.1.2 配置开发环境—

Windows 7 11

2.1.3 配置开发环境—

Windows 10 11

2.2 编写第 一段Java程序 13

2.2.1 第 一段Java代码 13

2.2.2 关键字 13

2.2.3 标识符 14

2.2.4 注释 14

2.2.5 main()方法 15

2.2.6 控制台的输入和输出 15

2.3 编译并运行Java程序 15

2.3.1 编译Java程序 15

2.3.2 运行Java程序 16

2.3.3 Java 11新特性:新的程序

运行方式 16

2.4 使用IDE工具—Eclipse 17

2.4.1 Eclipse 17

2.4.2 获得并安装Eclipse 17

2.4.3 新建一个Eclipse项目 20

2.4.4 编译并运行Eclipse项目 23

2.4.5 使用Eclipse打开一个

Java项目 24

2.5 Java的运行机制 25

2.5.1 编译型/解释型语言的

运行机制 25

2.5.2 Java程序则要先编译、

后运行 25

2.6 技术解惑 26

2.6.1 遵循Java源文件的

命名规则 26

2.6.2 忽视系统文件的扩展名 26

2.6.3 环境变量的问题 26

2.6.4 大小写的问题 27

2.6.5 main()方法的问题 27

2.6.6 注意空格问题 27

2.6.7 到底用不用IDE工具 27

2.6.8 区分JRE和JDK 28

2.7 课后练习 28

第3章 Java语法基础 29

3.1 常量和变量 30

3.1.1 常量 30

3.1.2 变量 31

3.2 数据类型 33

3.2.1 为什么要使用数据类型 33

3.2.2 简单数据类型的

取值范围 34

3.2.3 字符型 34

3.2.4 整型 35

3.2.5 浮点型 36

3.2.6 布尔型 37

3.3 运算符 38

3.3.1 算术运算符 38

3.3.2 关系运算符和逻辑

运算符 41

3.3.3 位逻辑运算符 42

3.3.4 条件运算符 43

3.3.5 赋值运算符 44

3.3.6 运算符的优先级 45

3.4 字符串 46

3.4.1 字符串的初始化 46

3.4.2 String类 47

3.4.3 StringBuffer类 49

3.5 类型转换 50

3.5.1 自动类型转换 50

3.5.2 强制类型转换 51

3.6 Java 11新特性:新增的

String函数 51

3.7 技术解惑 54

3.7.1 定义常量时的注意事项 54

3.7.2 char类型中单引号的

意义 54

3.7.3 正无穷和负无穷的

问题 55

3.7.4 移位运算符的限制 55

3.8 课后练习 55

第4章 条件语句 56

4.1 if语句详解 57

4.1.1 if语句 57

4.1.2 if语句的延伸 58

4.1.3 有多个条件判断的if

语句 59

4.2 switch语句详解 60

4.2.1 switch语句的形式 61

4.2.2 无break的情况 62

4.2.3 case语句后没有

执行语句 62

4.2.4 default可以不在末尾 63

4.3 条件语句演练 64

4.3.1 正确使用switch语句 64

4.3.2 正确使用if语句 64

4.3.3 switch语句的执行顺序 65

4.4 技术解惑 66

4.4.1 if…else语句的意义 66

4.4.2 使用switch语句时的

几个注意事项 67

4.4.3 switch语句和if…else if

语句的选择 68

4.5 课后练习 68

第5章 循环语句 69

5.1 循环语句 70

5.1.1 for循环 70

5.1.2 while循环语句 72

5.1.3 do…while循环语句 73

5.2 跳转语句 74

5.2.1 break语句的应用 74

5.2.2 return语句的应用 76

5.2.3 continue语句 77

5.3 技术解惑 77

5.3.1 使用for循环的技巧 77

5.3.2 跳转语句的选择技巧 78

5.4 课后练习 79

第6章 数组 80

6.1 简单的一维数组 81

6.1.1 声明一维数组 81

6.1.2 创建一维数组 81

6.1.3 初始化一维数组 82

6.2 二维数组 83

6.2.1 声明二维数组 83

6.2.2 创建二维数组 83

6.2.3 初始化二维数组 84

6.3 三维数组 85

6.3.1 声明三维数组 86

6.3.2 创建三维数组的方法 86

6.3.3 初始化三维数组 86

6.4 操作数组 87

6.4.1 复制数组 87

6.4.2 比较数组 87

6.4.3 排序数组 88

6.4.4 搜索数组中的元素 89

6.4.5 填充数组 89

6.4.6 遍历数组 90

6.5 技术解惑 90

6.5.1 动态初始化数组的规则 90

6.5.2 引用类型 91

6.5.3 数组的初始化 91

6.6 课后练习 91

第7章 Java的面向对象(上) 93

7.1 面向对象的基础 94

7.1.1 面向对象的定义 94

7.1.2 Java的面向对象编程 94

7.1.3 一切皆为对象 94

7.1.4 Java面向对象的几个

核心概念 95

7.2 创建类 96

7.2.1 定义类 96

7.2.2 定义属性 97

7.2.3 定义方法 97

7.2.4 定义构造器 98

7.3 修饰符 98

7.3.1 public修饰符 98

7.3.2 private修饰符 99

7.3.3 protected修饰符 100

7.3.4 其他修饰符 100

7.4 方法详解 101

7.4.1 方法与函数的关系 101

7.4.2 传递方法参数 102

7.4.3 长度可变的方法 102

7.4.4 不使用void关键字

构造方法名 103

7.4.5 递归方法 104

7.5 使用this 105

7.6 使用类和对象 105

7.6.1 创建和使用对象 106

7.6.2 使用静态变量和

静态方法 106

7.7 抽象类和抽象方法 107

7.7.1 抽象类和抽象方法的

基础 107

7.7.2 抽象类必须有一个

抽象方法 108

7.7.3 抽象类的作用 109

7.8 软件包 110

7.8.1 软件包的定义 110

7.8.2 在Eclipse中定义

软件包 110

7.8.3 在程序里插入软件包 111

7.9 技术解惑 112

7.9.1 在Java中传递引用类型的

实质 112

7.9.2 掌握this的好处 113

7.9.3 推出抽象方法的原因 114

7.9.4 使用抽象类的时机 114

7.9.5 static修饰的作用 115

7.9.6 数组内是同一类型的

数据 115

7.10 课后练习 115

第8章 Java的面向对象(中) 116

8.1 类的继承 117

8.1.1 继承的定义 117

8.1.2 父类和子类 117

8.1.3 调用父类的构造方法 118

8.1.4 访问父类的属性和方法 119

8.1.5 多重继承 120

8.1.6 重写父类的方法 121

8.2 重写和重载 122

8.2.1 重写 122

8.2.2 重载 124

8.3 隐藏和封装 125

8.3.1 Java中的封装 125

8.3.2 访问控制符 125

8.3.3 Java中的包 127

8.3.4 import 129

8.4 接口 129

8.4.1 定义接口 129

8.4.2 接口里的常量和方法 130

8.4.3 引用接口 132

8.4.4 接口间的继承 134

8.4.5 接口的私有方法 134

8.5 技术解惑 137

8.5.1 重写方法的注意事项 137

8.5.2 重写和重载的区别 138

8.5.3 举例理解类的意义 138

8.5.4 Java包的一些规则 138

8.5.5 探讨package和import

机制 138

8.5.6 接口编程的机理 139

8.5.7 接口和抽象类的区别和

联系 140

8.6 课后练习 141

第9章 Java的面向对象(下) 142

9.1 构造器详解 143

9.1.1 初始化构造器 143

9.1.2 构造器重载 143

9.1.3 调用父类构造器 144

9.2 多态 145

9.2.1 多态的定义 145

9.2.2 演示Java中的多态 147

9.2.3 使用instanceof运算符 148

9.3 引用类型 149

9.3.1 4种引用类型 150

9.3.2 引用变量的强制

类型转换 151

9.4 组合 152

9.5 初始化块 154

9.5.1 初始化块概述 154

9.5.2 静态初始化块 155

9.6 包装类 156

9.7 final修饰符 157

9.7.1 用final修饰变量 158

9.7.2 final方法 159

9.8 内部类 160

9.8.1 内部类概述 160

9.8.2 非静态内部类 160

9.8.3 成员内部类 162

9.8.4 局部内部类 162

9.8.5 静态内部类 163

9.9 匿名类 163

9.9.1 定义匿名类 164

9.9.2 匿名内部类 164

9.9.3 匿名内部类使用final

形参 165

9.10 枚举类 166

9.10.1 枚举类的方法 166

9.10.2 模拟枚举类 167

9.10.3 枚举类型 168

9.11 Java 11新特性:嵌套访问

 控制 170

9.12 技术解惑 172

9.12.1 构造器和方法的区别 172

9.12.2 this在构造器中的

 作用 173

9.12.3 子类构造器调用父类

 构造器的情况 173

9.12.4 强制类型转换的

 局限性 174

9.12.5 继承和组合的选择 174

9.12.6 发生异常的原因 174

9.12.7 用final修饰基本类型和

 引用类型变量之间的

 区别 174

9.12.8 类的4种权限 174

9.12.9 手工实现枚举类的

 缺点 175

9.13 课后练习 175

第 10章 集合 176

10.1 Java中的集合类 177

10.2 Collection接口和Iterator

 接口 178

10.2.1 Collection接口概述 178

10.2.2 Iterator接口概述 179

10.2.3 使用Collection接口中的

 方法来操作集合里的

 元素 179

10.3 Set接口 180

10.3.1 Set接口概述 180

10.3.2 使用HashSet 183

10.3.3 使用TreeSet类 184

10.3.4 使用EnumSet类 186

10.4 List接口 188

10.4.1 List接口概述 188

10.4.2 根据索引操作集合内的

 元素 190

10.4.3 使用ArrayList和

 Vector类 191

10.5 Map接口 192

10.5.1 Map接口中的方法 192

10.5.2 Map接口中的

 接口和类 193

10.5.3 使用HashMap和Hashtable

 实现类 196

10.5.4 使用SortedMap接口和

 TreeMap实现类 197

10.5.5 使用WeakHashMap类 199

10.5.6 使用IdentityHash

 Map类 200

10.5.7 使用EnumMap类 201

10.6 Queue接口 201

10.6.1 LinkedList类 202

10.6.2 PriorityQueue类 203

10.7 集合工具类Collections 203

10.7.1 排序操作 203

10.7.2 查找和替换操作 204

10.8 其他集合类 205

10.8.1 Stack类 205

10.8.2 属性类Properties 206

10.9 创建不可变的List、Set和

 Map(Java 9新增功能) 209

10.9.1 Java 9以前版本的

 解决方案 209

10.9.2 Java 9版本的解决

 方案 209

10.10 使用var类型推断(Java 10

新增功能) 211

10.11 技术解惑 212

10.11.1 Collection集合元素的

改变问题 212

10.11.2 深入理解HashSet 212

10.11.3 使用类EnumSet的

注意事项 213

10.11.4 ArrayList和Vector的

区别 213

10.11.5 TreeMap判断两个元素

相等的标准 213

10.11.6 分析Map类的性能 213

10.11.7 LinkedList、ArrayList、

Vector的性能问题 214

10.11.8 用swap()方法交换集合

中两个位置的内容 214

10.12 课后练习 214

第 11章 常用的类库 215

11.1 StringBuffer类 216

11.1.1 StringBuffer类概述 216

11.1.2 使用StringBuffer类 216

11.2 Runtime类 218

11.2.1 Runtime类概述 218

11.2.2 使用Runtime类 218

11.3 程序国际化 220

11.3.1 国际化基础 220

11.3.2 Locale类 221

11.3.3 ResourceBundle类 221

11.3.4 处理动态文本 222

11.3.5 使用类代替资源文件 223

11.4 System类 224

11.4.1 使用System类 224

11.4.2 垃圾对象的回收 225

11.5 Date类 225

11.5.1 使用Date类 226

11.5.2 使用Calendar类 226

11.5.3 使用DateFormat类 227

11.5.4 使用SimpleDate

 Format类 228

11.6 Math类 229

11.7 Random类 230

11.8 NumberFormat类 231

11.9 BigInteger类 232

11.10 BigDecimal类 233

11.11 复制对象 235

11.12 Arrays类 235

11.13 Comparable接口 236

11.13.1 Comparable接口

 概述 236

11.13.2 使用Comparable

接口 238

11.13.3 使用Comparator

接口 238

11.14 Observable类和Observer

接口 239

11.15 正则表达式 241

11.15.1 正则表达式概述 241

11.15.2 Java中的正则

表达式类 242

11.15.3 使用Pattern类和

Matcher类 243

11.15.4 String类和正则

表达式 243

11.15.5 Java 9新增的正则

表达式方法 244

11.15.6 Java 11新特性:正则

表达式参数的局部

变量语法 245

11.16 Timer类和TimerTask类 245

11.16.1 Timer类 246

11.16.2 TimerTask类 246

11.17 技术解惑 247

11.17.1 StringBuffer和String的

异同 247

11.17.2 通过System类获取本机

的全部环境属性 247

11.17.3 分析对象的

生命周期 248

11.17.4 若未实现Comparable

接口会出现异常 248

11.17.5 正则表达式的好处 248

11.18 课后练习 249

第 12章 泛型 250

12.1 泛型概述 251

12.1.1 泛型的优点 251

12.1.2 类型检查 251

12.1.3 使用泛型 253

12.2 泛型详解 253

12.2.1 定义泛型接口和类 253

12.2.2 派生子类 254

12.2.3 并不存在泛型类 255

12.3 类型通配符 255

12.3.1 设置类型实参的上限 256

12.3.2 设置类型形参的上限 257

12.3.3 设置通配符的下限 258

12.4 泛型方法 258

12.5 泛型接口 260

12.6 泛型继承 261

12.6.1 以泛型类为父类 261

12.6.2 以非泛型类为父类 262

12.7 强制类型转换 263

12.8 擦除 263

12.8.1 擦除的定义 263

12.8.2 擦除带来的问题 265

12.9 技术解惑 266

12.9.1 Java语言中泛型的

 本质 266

12.9.2 泛型方法和类型通配符的

 区别 267

12.9.3 泛型类的继承规则 268

12.9.4 类型擦除和泛型特性

 之间的联系 268

12.9.5 使用原则和注意事项 268

12.10 课后练习 268

第 13章 异常处理 270

13.1 异常概述 271

13.1.1 认识异常 271

13.1.2 Java提供的异常

 处理类 271

13.2 异常处理方式 272

13.2.1 try…catch语句 272

13.2.2 处理多个异常 273

13.2.3 finally语句 274

13.2.4 访问异常信息 275

13.3 抛出异常 276

13.3.1 使用throws抛出异常 276

13.3.2 使用throw抛出异常 278

13.4 自定义异常 279

13.4.1 Throwable类及其子类 279

13.4.2 使用Throwable类

 自定义异常 281

13.5 Checked异常和Runtime异常的

 区别 282

13.5.1 机制上的差异 282

13.5.2 逻辑上的差异 283

13.6 技术解惑 283

13.6.1 使用嵌套异常处理是更

 合理的方法 283

13.6.2 区别throws关键字和

 throw关键字 284

13.6.3 异常类的继承关系 284

13.6.4 子类Error和

 Exception 284

13.7 课后练习 284

第 14章 I/O文件处理和流处理 285

14.1 Java I/O概述 286

14.2 File类 286

14.2.1 File类中的方法 286

14.2.2 使用File类操作文件 287

14.3 RandomAccessFile类 290

14.3.1 RandomAccessFile类的

 常用方法 290

14.3.2 使用

 RandomAccessFile类 291

14.4 字节流与字符流 292

14.4.1 字节流类和字符流类 292

14.4.2 使用字节流 292

14.4.3 使用字符流 296

14.5 字节转换流 299

14.6 内存操作流 299

14.7 管道流 301

14.8 打印流 302

14.8.1 打印流概述 302

14.8.2 使用打印流 303

14.9 System类 303

14.9.1 System.out 304

14.9.2 System.err 304

14.9.3 System.in 305

14.9.4 输入/输出重定向 305

14.10 BufferedReader类 307

14.10.1 BufferedReader类

概述 307

14.10.2 使用

BufferedReader类 308

14.11 Scanner类 309

14.11.1 Scanner类概述 310

14.11.2 使用Scanner类 310

14.12 数据操作流 312

14.12.1 DataOutputStream类 313

14.12.2 DataInputStream类 313

14.13 合并流 315

14.14 压缩流 316

14.14.1 ZIP压缩输入/

输出流概述 316

14.14.2 ZipOutputStream类 316

14.14.3 ZipFile类 319

14.14.4 ZipInputStream类 319

14.15 回退流 320

14.16 字符编码 321

14.16.1 得到本机编码 322

14.16.2 产生乱码 322

14.17 对象序列化 323

14.17.1 Serializable接口 323

14.17.2 对象输出流

ObjectOutputStream 324

14.17.3 对象输入流

ObjectInputStream 324

14.17.4 Externalizable接口 325

14.17.5 关键字transient 326

14.17.6 序列化一组对象 327

14.18 Buffer类 328

14.18.1 Buffer类中的

主要方法 329

14.18.2 使用Buffer类 330

14.19 Channel类 331

14.20 使用流API 333

14.20.1 Java 8中的流 333

14.20.2 Java 9中新增的

Stream 335

14.21 使用try…with…resources

语句 337

14.21.1 try…with…resources

语句概述 337

14.21.2 try…with…resources的

改进(Java 9新增

功能) 338

14.22 技术解惑 341

14.22.1 使用File.separator

表示分隔符 341

14.22.2 综合演练创建和

删除文件 341

14.22.3 File类的复杂用法 342

14.22.4 字节流和字符流的

区别 342

14.22.5 System.err和

System.out的选择 344

14.22.6 使用I/O实现一个简单的

菜单效果 344

14.22.7 对象序列化和对象反

序列化操作时的版本

兼容性问题 345

14.22.8 不能让所有的类都实现

Serializable接口 346

14.23 课后练习 346

第 15章 AWT的奇幻世界 347

15.1 GUI框架概述 348

15.1.1 AWT框架 348

15.1.2 Swing框架 348

15.1.3 JavaFX框架 348

15.2 AWT框架的结构 349

15.3 容器 350

15.3.1 容器概述 350

15.3.2 容器中的常用组件 351

15.4 布局管理器 352

15.4.1 FlowLayout布局 353

15.4.2 BorderLayout布局 353

15.4.3 GridLayout布局 355

15.4.4 GridBagLayout布局 356

15.4.5 CardLayout布局 356

15.4.6 BoxLayout布局

 管理器 357

15.5 AWT中的常用组件 357

15.5.1 AWT组件概览 358

15.5.2 使用组件 358

15.6 AWT中的对话框 360

15.6.1 AWT对话框概述 360

15.6.2 使用AWT对话框 360

15.7 使用图像多分辨率API 361

15.7.1 图像多分辨率概述 361

15.7.2 图像多分辨率API

 详解 361

15.7.3 图像多分辨率API

 实战 362

15.8 javax.imageio.plugins.tiff 364

15.8.1 ImageIO模块概述 364

15.8.2 TIFF接口 366

15.9 技术解惑 367

15.9.1 使用绝对定位 367

15.9.2 对事件处理模型的

 简化 368

15.9.3 使用AWT开发动画 368

15.9.4 图片缩放在现实中的

 意义 368

15.9.5 AWT和Swing是窗体

 编程的两个主角 368

15.9.6 AWT中的菜单组件不能

 创建图标菜单 368

15.9.7 Java的事件模型 368

15.9.8 事件和事件监听器 370

15.10 课后练习 372

第 16章 Swing 373

16.1 Swing概述 374

16.2 Swing的组件 375

16.2.1 Swing组件的层次

 结构 375

16.2.2 Swing实现AWT

 组件 376

16.3 拖放处理 380

16.4 实现进度条效果 381

16.4.1 创建一个进度条 381

16.4.2 使用ProgressMonitor创建

 进度条对话框 383

16.5 技术解惑 383

16.5.1 贯穿Java开发的MVC

 模式 383

16.5.2 Swing的优势 383

16.5.3 使用JSlider和

 BoundedRangeModel测试

 滑动条效果 384

16.5.4 使用ListCellRenderer改变

 窗体中列表项的外观 385

16.6 课后练习 385

第 17章 JavaFX开发基础 386

17.1 JavaFX概述 387

17.1.1 JavaFX的特色 387

17.1.2 安装e(fx)clipse插件 387

17.1.3 认识第 一个JavaFX

 程序 389

17.2 JavaFX界面结构 389

17.2.1 窗体结构剖析 389

17.2.2 属性绑定 391

17.2.3 样式属性和角度属性 392

17.3 使用Color类设置颜色 393

17.3.1 设置颜色的方法 393

17.3.2 使用RGB方式设置

 颜色 395

17.3.3 使用Web方式设置

 颜色 395

17.4 绘制文字 396

17.4.1 Text包概述 396

17.4.2 绘制指定样式的文本 397

17.5 绘制形状 398

17.5.1 使用Line绘制线条 398

17.5.2 使用Rectangle

 绘制矩形 399

17.5.3 使用Circle绘制圆 401

17.5.4 使用Ellipse绘制椭圆 402

17.5.5 使用Arc绘制圆弧 403

17.5.6 使用Polygon绘制

 多边形 404

17.5.7 使用Polyline绘制

 折线 405

17.5.8 使用CubicCurve绘制三次

 曲线 406

17.5.9 使用QuadCurve绘制二次

 曲线 407

17.6 显示图像 408

17.6.1 使用Image显示图像 408

17.6.2 使用ImageView显示

 图像 409

17.7 界面布局 410

17.7.1 使用Pane的画布功能 411

17.7.2 使用StackPane实现特定

 面板功能 412

17.7.3 使用FlowPane实现

 序列放置 412

17.7.4 使用GridPane实现

 网格布局 414

17.7.5 使用BorderPane实现

 区域布局 415

17.7.6 使用HBox实现水平

 布局 417

17.7.7 使用VBox实现垂直

 布局 418

17.8 技术解惑 419

17.8.1 Swing、AWT和JavaFX的

 区别 419

17.8.2 JavaFX的属性类型 419

17.9 课后练习 420

第 18章 使用JavaFX UI组件 421

18.1 使用标签组件 422

18.1.1 标签属性和方法 422

18.1.2 标签组件实战演练 423

18.2 使用按钮组件 424

18.2.1 按钮属性和方法 424

18.2.2 按钮组件实战演练 425

18.3 使用复选框组件 426

18.3.1 复选框属性和方法 426

18.3.2 复选框组件实战演练 427

18.4 使用单选按钮组件 428

18.4.1 单选按钮属性和方法 428

18.4.2 单选按钮组件实战

 演练 429

18.5 使用文本框组件 430

18.5.1 文本框的属性和方法 430

18.5.2 文本框组件实战演练 431

18.6 使用文本域组件 432

18.6.1 文本域的属性和方法 432

18.6.2 文本域组件实战演练 432

18.7 使用选择框组件 434

18.7.1 选择框的属性和方法 434

18.7.2 选择框组件实战演练 434

18.8 使用密码框组件 435

18.8.1 密码框的属性和方法 435

18.8.2 密码框组件实战演练 436

18.9 使用组合框组件 437

18.9.1 组合框的属性和方法 437

18.9.2 组合框实战演练 438

18.10 使用列表视图组件 439

18.10.1 列表视图的属性和

方法 439

18.10.2 列表视图组件实战

演练 440

18.11 使用滚动条组件 442

18.11.1 滚动条的属性和

方法 442

18.11.2 滚动条组件实战

演练 442

18.12 使用滑块组件 444

18.12.1 滑块的属性和方法 444

18.12.2 滑块组件实战演连 445

18.13 使用树视图组件 446

18.13.1 树视图的属性和

方法 446

18.13.2 树视图组件实战

演练 447

18.14 使用进度组件 448

18.14.1 进度指示器 448

18.14.2 进度条 448

18.14.3 进度组件实战演练 448

18.15 使用HTML编辑器组件 449

18.15.1 HTML编辑器组件

概述 450

18.15.2 HTML编辑器组件实战

演练 450

18.16 使用菜单组件 451

18.16.1 菜单组件概述 451

18.16.2 创建菜单栏 452

18.17 使用文件选择框组件 453

18.17.1 文件选择框概述 453

18.17.2 文件选择框组件

实战演练 454

18.18 使用颜色选择器组件 456

18.18.1 颜色选择器概述 456

18.18.2 颜色选择器组件

实战演练 458

18.19 技术解惑 459

18.19.1 制作圆形按钮 459

18.19.2 设置按钮的内容 460

18.19.3 树表视图 460

18.20 课后练习 460

第 19章 JavaFX事件处理程序 461

19.1 JavaFX事件处理系统概述 462

19.1.1 Java的事件模型 462

19.1.2 JavaFX中的事件 462

19.1.3 事件处理机制的流程 463

19.1.4 事件处理 465

19.1.5 事件和事件源 465

19.2 使用快捷方法实现事件处理 467

19.2.1 快捷方法概述 467

19.2.2 处理按钮事件 468

19.3 处理鼠标事件 469

19.3.1 鼠标事件概述 469

19.3.2 使用鼠标事件 469

19.4 处理键盘事件 470

19.4.1 键盘事件概述 470

19.4.2 使用键盘事件 471

19.5 使用事件过滤器 472

19.5.1 注册和移除事件

 过滤器 472

19.5.2 使用事件过滤器 473

19.6 使用事件处理程序 475

19.6.1 注册和移除事件

 处理程序 475

19.6.2 使用事件处理程序 476

19.7 使用可触摸设备的事件 477

19.7.1 手势和触摸事件 477

19.7.2 手势事件实战 478

19.8 技术解惑 483

19.8.1 实现鼠标移到按钮上

 按钮变大的效果 483

19.8.2 实现JavaFX绑定 483

19.9 课后练习 483

第 20章 JavaFX框架下的Web开发 484

20.1 JavaFX内嵌浏览器概述 485

20.2 使用WebView组件 486

20.2.1 WebView组件概述 486

20.2.2 WebView组件

 实战演练 487

20.3 使用WebEngine接口 488

20.3.1 WebEngine概述 488

20.3.2 在JavaFX中执行

 JavaScript程序 489

20.3.3 在Web页面中调用

 JavaFX程序 492

20.3.4 实现弹出式窗口 493

20.4 管理Web历史记录 495

20.4.1 WebHistory概述 495

20.4.2 网页浏览历史记录

 实战 495

20.5 使用CSS文件 496

20.6 使用FXML 499

20.6.1 FXML概述 499

20.6.2 FXML实战演练 500

20.7 技术解惑 504

20.7.1 JavaFX集合 504

20.7.2 使用标题面板 505

20.8 课后练习 505

第 21章 JavaFX框架下的多媒体开发 506

21.1 变换操作 507

21.1.1 变换概述 507

21.1.2 变换操作 507

21.2 动画效果 510

21.2.1 过渡动画 510

21.2.2 时间轴动画 512

21.3 视觉特效 514

21.3.1 混合特效 514

21.3.2 发光特效 515

21.3.3 模糊特效 517

21.3.4 阴影特效 519

21.3.5 内阴影特效 520

21.3.6 倒影特效 522

21.3.7 光照特效 523

21.4 3D特效 524

21.4.1 JavaFX 3D概述 524

21.4.2 使用3D形状 524

21.4.3 3D镜头 525

21.4.4 使用子场景 527

21.4.5 使用光照 529

21.4.6 使用材质 530

21.5 音频和视频 532

21.5.1 使用Media获取获得

 媒体源 532

21.5.2 使用MediaPlayer播放并

 控制媒体 532

21.5.3 使用MediaView

 显示视频 533

21.5.4 控制播放的视频演练 533

21.6 CSS API(Java 9新增功能) 535

21.6.1 使用传统方式 535

21.6.2 使用Skin API 536

21.7 技术解惑 538

21.7.1 注册一个事件

 处理程序 538

21.7.2 注意场景背景图的

 问题 539

21.7.3 y-down坐标系和y-up

 坐标系 539

21.8 课后练习 539

第 22章 数据库编程 540

22.1 SQL基础 541

22.1.1 数据定义 541

22.1.2 数据操纵 542

22.2 初识JDBC 544

22.2.1 JDBC API 544

22.2.2 JDBC驱动类型 544

22.2.3 JDBC的常用接口

 和类 545

22.2.4 JDBC编程的一般

 步骤 547

22.3 连接Access数据库 549

22.3.1 Access数据库概述 549

22.3.2 连接本地Access

 数据库 550

22.4 连接SQL Server数据库 552

22.4.1 下载并安装

 SQL Sever 2016驱动 552

22.4.2 测试连接 553

22.4.3 获取SQL Server数据库中

 指定的表 554

22.5 连接MySQL数据库 555

22.5.1 下载并配置MySQL

 驱动 555

22.5.2 将MySQL驱动加载到

 Eclipse中 556

22.5.3 测试连接 557

22.6 技术解惑 557

22.6.1 连接池的功效 557

22.6.2 服务器自带连接池的

 问题 557

22.6.3 连接池模型 559

22.6.4 数据模型、概念模型和

 关系数据模型 559

22.6.5 数据库系统的结构 560

22.7 课后练习 560

第 23章 网络与通信编程 561

23.1 Java中的网络包 562

23.1.1 InetAddress类 562

23.1.2 URLDecoder类和

 URLEncoder类 562

23.1.3 URL类和

 URLConnection类 563

23.1.4 实践演练 564

23.2 TCP编程 567

23.2.1 使用ServerSocket 567

23.2.2 使用Socket 568

23.2.3 TCP中的多线程 569

23.3 UDP编程 572

23.3.1 使用DatagramSocket 572

23.3.2 使用MulticastSocket 574

23.4 代理服务器 577

23.4.1 代理服务器概述 577

23.4.2 使用Proxy创建

 连接 578

23.4.3 使用ProxySelector

 选择代理服务器 579

23.5 HTTP/2 Client API(Java 10的

 改进) 581

23.5.1 孵化器模块usergrid

 概述 581

23.5.2 HTTP/2 Client API

 概述 582

23.5.3 处理HTTP请求 582

23.6 技术解惑 584

23.6.1 使用异常处理完善

 程序 584

23.6.2 使用ServerSocketChannel

 的弊端 584

23.6.3 体会复杂的

 DatagramPacket 585

23.6.4 MulticastSocket类的

 重要意义 585

23.6.5 继承ProxySelector时需

 要做的工作 585

23.6.6 代理服务无止境 585

23.6.7 生成jdk.incubator.httpclient

 模块的Javadoc 586

23.7 课后练习 586

第 24章 多线程和进程 587

24.1 线程概述 588

24.1.1 线程与进程 588

24.1.2 线程的意义 588

24.1.3 Java的线程模型 589

24.2 创建线程 590

24.2.1 使用Thread类创建

 线程 590

24.2.2 使用Runnable接口创建

 线程 592

24.2.3 使用Thread.onSpinWait()

 方法实现循环等待 593

24.3 线程的生命周期 594

24.3.1 线程的运行与停止 594

24.3.2 线程的挂起和唤醒 595

24.3.3 终止线程的3种

 方法 596

24.3.4 线程的阻塞 597

24.3.5 线程的死亡 597

24.4 控制线程 598

24.4.1 使用join方法 599

24.4.2 慎重使用volatile

 关键字 599

24.4.3 后台、让步和睡眠 602

24.5 线程传递数据 603

24.5.1 向线程传递数据的

 方法 603

24.5.2 线程中返回数据的

 方法 605

24.6 进程 606

24.6.1 使用类ProcessBuilder 606

24.6.2 使用类Process 609

24.6.3 使用类ProcessHandle

 (Java 9新增功能) 609

24.7 技术解惑 612

24.7.1 线程和函数的关系 612

24.7.2 在run方法中使用线程名

 时产生的问题 612

24.7.3 继承Thread类或实现

 Runnable接口的比较 612

24.7.4 start()和run()的区别 613

24.7.5 使用sleep()方法的

 注意事项 613

24.7.6 线程的优先级 613

24.7.7 如何确定发生死锁 613

24.7.8 关键字synchronized和

 volatile的区别 614

24.7.9 sleep()方法和yield()

 方法的区别 614

24.7.10 分析Swing的多线程

死锁问题 614

24.8 课后练习 615

第 25章 大数据综合实战:爬取并分析

 知乎用户信息 616

25.1 系统设计 617

25.1.1 系统目标 617

25.1.2 系统功能结构 617



25.2 数据库设计 618

25.3 知乎爬虫请求分析 618

25.4 系统文件夹组织结构 621

25.5 系统详细运行流程图 622

25.6 具体编码 623

25.6.1 核心模块代码的编写 623

25.6.2 知乎抓取功能模块 629

25.6.3 代理功能模块 637

25.7 知乎用户大数据分析 645

25.7.1 数据展示模块 645

25.7.2 运行展示 646

25.8 项目开发难点分析 648









展开全部

作者简介

扶松柏,上海大学计算机科学技术学院硕士,通信工程博士,精通Java、C语言、C 程序开发,擅长底层技术和应用程序的结合。具有丰富的Java开发经验和编程心得。

预估到手价 ×

预估到手价是按参与促销活动、以最优惠的购买方案计算出的价格(不含优惠券部分),仅供参考,未必等同于实际到手价。

确定
快速
导航