登入帳戶  | 訂單查詢  | 購物車/收銀台( 0 ) | 在線留言板  | 付款方式  | 聯絡我們  | 運費計算  | 幫助中心 |  加入書簽
會員登入 新註冊 | 新用戶登記
HOME新書上架暢銷書架好書推介特價區會員書架精選月讀2023年度TOP分類閱讀雜誌 香港/國際用戶
最新/最熱/最齊全的簡體書網 品種:超過100萬種書,正品正价,放心網購,悭钱省心 送貨:速遞 / EMS,時效:出貨後2-3日

2024年04月出版新書

2024年03月出版新書

2024年02月出版新書

2024年01月出版新書

2023年12月出版新書

2023年11月出版新書

2023年10月出版新書

2023年09月出版新書

2023年08月出版新書

2023年07月出版新書

2023年06月出版新書

2023年05月出版新書

2023年04月出版新書

2023年03月出版新書

『簡體書』Java课程设计案例精编(第3版)

書城自編碼: 2812599
分類: 簡體書→大陸圖書→計算機/網絡程序設計
作者: 张建军、吴启武
國際書號(ISBN): 9787302435877
出版社: 清华大学出版社
出版日期: 2016-05-01
版次: 3 印次: 1
頁數/字數: 469/737
書度/開本: 16开 釘裝: 平装

售價:NT$ 466

我要買

share:

** 我創建的書架 **
未登入.



新書推薦:
未来学习者的素养和教育
《 未来学习者的素养和教育 》

售價:NT$ 475.0
不理想的妻子
《 不理想的妻子 》

售價:NT$ 269.0
安妮女王时代的英格兰:拉米伊战役与英苏联合(安妮女王时代三部曲之二)
《 安妮女王时代的英格兰:拉米伊战役与英苏联合(安妮女王时代三部曲之二) 》

售價:NT$ 475.0
宋学西渐——欧洲迈向近代启蒙之路 儒学与欧洲文明研究丛书 井川义次
《 宋学西渐——欧洲迈向近代启蒙之路 儒学与欧洲文明研究丛书 井川义次 》

售價:NT$ 751.0
自顶向下的Ceph分布式存储系统基本原理
《 自顶向下的Ceph分布式存储系统基本原理 》

售價:NT$ 421.0
新经典日本语(基础教程)(第二册)(第三版)
《 新经典日本语(基础教程)(第二册)(第三版) 》

售價:NT$ 421.0
史学导论:历史研究的目标、方法与新方向(第七版)
《 史学导论:历史研究的目标、方法与新方向(第七版) 》

售價:NT$ 513.0
洞见D2C:寻找新增长曲线(精装典藏版)
《 洞见D2C:寻找新增长曲线(精装典藏版) 》

售價:NT$ 319.0

編輯推薦:
本书语言通俗,简明实用,并通过实例来解释相关的概念和方法,有助于读者理解和掌握Java语言编程方法。书中各个案例相互独立,均给出了详细的设计步骤,包括功能描述、理论基础、总体设计、代码实现、程序运行与发布等,而且代码都有详细的注释,便于读者阅读。

本书前两版受到了广泛欢迎,应广大读者的要求,作者于2015年进行了第3版修订。为了满足广大读者对当前流行的APP设计开发的需求,新版书中更新了原第5章蜘蛛纸牌和第6章吃豆子游戏两个案例,将其分别改为成绩查询APP和消息推送APP。其中,成绩查询APP设计结合当前校园信息化建设实际需求,详细讲解了如何利用移动客户端APP来查询学生的考试成绩;消息推送APP则结合当前常用的向移动客户端推送消息的实际应用需求,对如何利用第三方推送平台,从移动客户端"接收消息"、"打开链接"、"管理消息"等进行了详尽分析,对关键代码重点讲解。作者希望借助新增的案例,向读者讲解APP的设计方式与功能实现的方式,以达到举一反三的目的。
內容簡介:
Java语言已成为软件设计开发者应掌握的一门基础语言。本书为Java课程设计指导用书,共分11章,具体内容包括:Java环境的安装与配置、Java语言编程的基础知识、Java语言中最重要的类与对象、网页浏览器案例、成绩查询APP设计案例、消息推送APP设计案例、端口扫描器案例、聊天程序案例、中国象棋对弈系统案例、资产管理系统案例和人事管理系统案例。
本书以案例带动知识点的讲解,展示实际项目的设计思想和设计理念,使读者可以举一反三。本书每个实例各有侧重点,避免了实例罗列和知识点重复。本书选择目前流行的APP设计及高校课程设计的典型项目,并注重切合实际应用,使读者能够真正做到学以致用。
本书适合作为高等院校学生学习Java课程设计的教材,也可作为Java语言程序开发人员及Java编程爱好者的指导用书。
目錄
目录
第1章 Java概述 1
1.1 Java语言简介 2
1.1.1 Java语言的历史 2
1.1.2 Java语言的特点 2
1.2 Java平台 4
1.2.1 Java平台简介 4
1.2.2 Java虚拟机 4
1.3 Java运行环境的建立 5
1.3.1 JDK简介 5
1.3.2 JDK的安装 5
1.3.3 JDK运行环境的设置 5
1.3.4 JDK包含的常用工具 7
1.4 JDK 1.6的新特性 8
1.5 Java程序的编写、编译和运行 10
1.5.1 Java程序的编译与运行 10
1.5.2 简单的Java程序举例 11
1.5.3 Java的注释 13
第2章 Java程序设计基础 15
2.1 Java的基本数据类型 16
2.1.1 数据类型 16
2.1.2 标识符与关键字 16
2.1.3 常量 17
2.1.4 变量 19
2.2 Java运算符与表达式 21
2.2.1 算术运算符 21
2.2.2 关系运算符 21
2.2.3 布尔运算符 22
2.2.4 位运算符 22
2.2.5 赋值运算符 22
2.2.6 条件运算符 24
2.2.7 表达式和运算符的优先级 24
2.3 Java控制语句 25
2.3.1 选择结构 25
2.3.2 循环结构 26
2.3.3 跳转结构 28
2.4 字符串 29
2.4.1 String类 30
2.4.2 StringBuffer类 31
2.5 数组 32
2.5.1 一维数组 32
2.5.2 多维数组 34
2.5.3 对象数组 35
第3章 类和对象 37
3.1 类的定义与使用 38
3.1.1 类的定义 38
3.1.2 构造函数 41
3.1.3 对象的使用 42
3.1.4 访问控制 43
3.2 继承 44
3.3 重载 45
3.3.1 方法的重载 45
3.3.2 构造函数的重载 47
3.3.3 super与this 48
3.4 包与接口 51
3.4.1 包与引用包 51
3.4.2 ClassPath环境变量 52
3.4.3 接口 52
3.5 Java的垃圾回收与析构 53
3.6 抽象类与内部类 54
3.6.1 抽象类 54
3.6.2 内部类 54
3.7 基础类的使用 55
3.7.1 基础类库 55
3.7.2 Math类 59
3.7.3 时间与日期的处理 61
第4章 网页浏览器的开发 67
4.1 功能描述 68
4.2 理论基础 68
4.2.1 事件处理 68
4.2.2 Swing相关组件 70
4.2.3 输入输出 76
4.3 总体设计 80
4.4 代码实现 81
4.4.1 WebBrowser.java 81
4.4.2 ViewSourceFrame.java 91
4.5 程序的运行与发布 92
4.5.1 运行程序 92
4.5.2 发布程序 94
第5章 成绩查询APP设计 95
5.1 功能描述 96
5.2 理论基础 96
5.2.1 Http请求 96
5.2.2 Wireshark软件的使用 97
5.2.3 数据解析 98
5.2.4 SimpleAdapter的应用 100
5.3 总体设计 101
5.3.1 登录教务系统 101
5.3.2 获取并显示成绩 101
5.4 代码实现 102
5.4.1 登录功能 102
5.4.2 获取成绩 109
5.4.3 显示成绩 117
5.5 程序的运行与发布 122
5.5.1 运行程序 122
5.5.2 发布程序 124
第6章 消息推送APP设计 127
6.1 功能描述 128
6.2 理论基础 128
6.2.1 第三方消息推送平台 128
6.2.2 AppKey申请 128
6.2.3 导入SDK开发包 129
6.2.4 配置 AndroidManifest.xml
130
6.2.5 SQLite 132
6.2.6 BaseAdapter的应用 133
6.3 总体设计 134
6.3.1 数据库设计 134
6.3.2 消息处理 134
6.3.3 消息管理 134
6.4 代码实现 135
6.4.1 数据库设计 135
6.4.2 消息处理 135
6.4.3 消息管理 138
6.5 程序的运行与发布 149
6.5.1 运行程序 149
6.5.2 发布程序 152
第7章 基于多线程的端口扫描器 153
7.1 功能描述 154
7.2 理论基础 154
7.2.1 布局管理器
LayoutManager 154
7.2.2 多线程 157
7.2.3 端口扫描 161
7.3 总体设计 162
7.4 代码实现 163
7.4.1 TCPThread.java 163
7.4.2 ThreadScan.java 167
7.4.3 AboutDialog.java 178
7.5 程序的运行与发布 179
7.5.1 运行程序 179
7.5.2 发布程序 181
第8章 Java聊天室 183
8.1 功能描述 184
8.2 理论基础 184
8.2.1 套接字通信 184
8.2.2 套接字客户端 185
8.2.3 套接字服务端 186
8.2.4 数据报通信 186
8.2.5 URL与URLConnection 187
8.2.6 Java链表的实现 189
8.3 总体设计 190
8.3.1 聊天室服务器端的设计 190
8.3.2 聊天室客户端设计 191
8.4 代码实现 191
8.4.1 聊天室服务器端代码的
实现 191
8.4.2 聊天室客户端代码的实现 211
8.5 程序的运行与发布 228
8.5.1 聊天室服务器端程序的
运行 228
8.5.2 聊天室服务器端程序的
发布 230
8.5.3 聊天室客户端程序的运行 231
8.5.4 聊天室客户端程序的发布 232
第9章 中国象棋对弈系统 233
9.1 功能描述 234
9.2 理论基础 234
9.2.1 中国象棋简介 234
9.2.2 中国象棋走子规则 234
9.2.3 中国象棋吃子规则 234
9.3 总体设计 235
9.4 代码实现 235
9.4.1 引用类包及类的定义 235
9.4.2 图形用户界面模块 236
9.4.3 按钮的操作模块 240
9.4.4 棋子的操作模块 243
9.4.5 棋子的移动规则类模块 250
9.5 程序的运行与发布 280
9.5.1 运行程序 280
9.5.2 发布程序 282
第10章 资产管理系统 283
10.1 需求分析 284
10.2 系统设计 284
10.2.1 结构设计 284
10.2.2 功能结构 285
10.2.3 功能流程及工作流描述 285
10.3 数据库设计 287
10.4 详细设计 288
10.4.1 资产管理系统主界面模块 288
10.4.2 系统管理模块 295
10.4.3 资产信息管理模块 302
11.4.4 人员信息管理模块 319
11.4.5 资产操作管理模块 335
11.4.6 信息查询模块 355
11.4.7 数据库操作模块 363
10.5 程序的运行与发布 395
10.5.1 配置数据源 395
10.5.2 运行程序 397
10.5.3 发布程序 397
第11章 人事管理系统 399
11.1 需求分析 400
11.2 系统设计 401
11.2.1 结构设计 401
11.2.2 功能结构 401
11.2.3 功能流程及工作流描述 401
11.3 数据库设计 403
11.4 详细设计 404
11.4.1 人事管理系统主界面模块 404
11.4.2 基础信息管理模块 410
11.4.3 人员调动管理模块 435
11.4.4 人员考核管理模块 443
11.4.5 劳资管理模块 450
11.4.6 数据库操作模块 458
11.5 程序的运行与发布 483
11.5.1 配置数据源 483
11.5.2 运行程序 484
11.5.3 发布程序 484
参考文献 486
內容試閱
第2章 Java程序设计基础


本章主要介绍基本数据类型、运算符、控制语句、字符串及数组等Java程序设计所要掌握的基础知识。基本数据类型部分主要介绍Java中的数据类型、标识符与关键字、常量与变量等内容;运算符与表达式部分主要介绍算术运算符、位运算符、布尔运算符、赋值运算符、关系运算符、条件运算符及它们的优先级;控制语句部分主要介绍选择结构、循环结构及跳转结构所使用的各种语句及其特性;字符串部分主要介绍String类与StringBuffer类的使用方法与注意事项;最后介绍数组概念及一维数组、多维数组及对象数组的定义与使用。
2.1 Java的基本数据类型

数据类型是程序设计中最基本的概念。Java语言中的数据类型非常丰富,所有变量都必须属于某一个数据类型。不同的数据类型所存储的值的种类,以及可能进行的操作方式都是不同的。本节主要讲解Java的基本数据类型,常量、变量的基本概念,以及变量的定义方法。
2.1.1 数据类型

Java的数据类型可以分为两大类:基本数据类型与复合数据类型。其中,基本数据类型包括整型、浮点型、布尔型和字符型;复合数据类型包括数组、接口和类,如图2.1所示。

图2.1 Java的数据类型
2.1.2 标识符与关键字

在程序设计语言中,用来标识成分如类、对象、变量、常量、方法和参数名称等存在与唯一性的名字,称为标识符。标识符是由字母、下划线或美元符号$开头,后接若干任意字符的字符串。在程序设计中,程序设计者可以根据需要,自由地确定简单且易于理解的标识符,但同时也应该遵循一定的语法规则。
Java对标识符定义的规定如下。
* 标识符可以由字母、数字、下划线_或美元符号$组成。
* 标识符必须以字母、下划线_或美元符号$开头。
* 标识符的长度不限,但在实际应用中不宜过长。
* Java语言中的标识符区分大小写,例如Myworld与myworld是不同的。
* 标识符不能与关键字保留字同名。
下面举例说明。
合法标识符:xyz、_xyz、$xyz。
非法标识符:5xyz首字符不能为数字、Xyz@含有非法字符、if关键字。

在Java语言中,有一部分标识符被确定为关键字保留字,因为在程序设计中,该部分标识符已经被使用或者被赋予特定意义。表2.1为Java语言中的关键字。
表2.1 Java中的关键字
abstract
boolean
break
byte
case
cast
catch
char
class
const
continue
default
do
double
else
extends
final
finally
float
for
future
generic
goto
if
implements
import
inner
instanceof
int
long
native
new
null
operator
outer
package
private
protected
public
rest
return
short
static
super
switch
synchronized
this
throw
transient
try
var
void
volatile
while


2.1.3 常量
常量是指在程序运行过程中固定不变的量。常量共包含以下6类。
1.整型常量
整型常量包括4种类型:int、long、short、byte。4种类型的取值范围如表2.2所示。
表2.2 Java整型数据的取值范围
数据类型
所占字节
表示范围
int整型
4
-2147483648~2147483647
long长整型
8
-9223372036854775808~9223372036854775807
short短整型
2
-32768~32767
byte位
1
-128~127


整数类型的文字可使用十进制、八进制和十六进制表示。首位为"0"表示八进制的数值;首位为"0x"表示十六进制的数值。请看下面的例子:

8 表示十进制值8
075 表示八进制数值75也就是十进制数61
0x9ABC
表示十六进制的数值9ABC也就是十进制数39612

整数默认为int类型,如在其后有一个字母"L"则表示一个long值也可以用小写字母"l"。由于小写字母"l"与数字"1"容易混淆,因而,建议大家采用大写字母"L"。
上面所说的整数long的形式如下:

8L 表示十进制值8,是一个long值
075L 表示八进制数值75,是一个long值
0x9ABCL
表示十六进制的数值9ABC,是一个long值

2.浮点型常量
为了提高计算的准确性,由此引入了浮点型数据。浮点型数据包括两种:单精度和双精度,取值范围如表2.3所示。
表2.3 浮点型数据的取值范围
数据类型
所占字节
表示范围
float单精度
4
-3.4E38~3.4E38
double双精度
8
-1.7E308~1.7E308

如果不明确指明浮点数的类型,浮点数默认为double。下面是几个浮点数:

3.14159 double型浮点数
2.08E25 double型浮点数
6.56f float型浮点数

在两种类型的浮点数中,double类型的浮点数具有更高的精度。
3.字符型常量

字符型常量是由一对单引号包含起来的单个字符,例如''a'',''2''。Java中的字符型数据是16位无符号型数据,它表示Unicode集,而不仅仅是ASCII集。
与C语言类似,Java也提供转义字符,以反斜杠\开头,将其后的字符转变为另外的含义。表2.4列出了Java中的转义字符。
表2.4 Java中的转义字符
转义字符
含 义
\n
换行
\t
垂直制表符
\b
退格
\r
回车
\f
走纸换页
\ 反斜杠
\''
单引号

续表
转义字符
含 义
\"
双引号
\ddd
八进制数
\xdd
十六进制数
\udddd
泛代码字符

4.字符串型常量
字符串型常量是由一对双引号包含的,由0个或多个字符组成的一个字符序列。
5.布尔型常量
布尔型常量只能取值为true和false,其中true表示逻辑真,false表示逻辑假。
6.null常量
null常量只有一个值,用null表示为空。
2.1.4 变量
变量就是在程序运行过程中值可以变化的量。变量名是用户为变量定义的标识符,变量的值存储在系统为变量分配的存储单元中。Java变量的类型包括:整型变量、浮点型变量、布尔型变量、字符型变量、字符串型变量、数组变量、对象引用变量等。
1.变量的定义
在Java程序设计过程中,变量需要先定义后使用。定义变量的时候需要确定变量的类型和变量的标识符。
声明Java变量的语法格式如下:

type var1[,ver2][,...]
type var1[=init1][,var2[=init2],...]

其中,type为变量类型名,var为变量名,init为初始值,方括号中的内容为可选项。例如:

int a = 1, b, c;
定义整型变量a、b、c,并为a赋初值1
float f = 1.12f;
定义单精度浮点型变量f,并赋初值
double d = 32.34;
定义双精度浮点型变量d,并赋初值
char char1 = ''c'';
定义字符型变量char1,并赋初值
String s = "abc";
定义字符串型变量s,并赋初值
boolean b = true;
定义布尔型变量b,并赋初值

2.变量基本数据类型的转换

在Java程序中,将一种数据类型的常数或变量转换为另外一种数据类型,称为类型转换。当多种数据类型的数据混合运算时,不同类型的数据必须先转化为同一种数据类型。类型转换有两种:自动类型转换或称隐含类型转换和强制类型转换。
1 自动类型转换
自动类型转换遵循的规则是把低精度类型转换为高精度类型。当把占用位数较短的数据转化成占用位数较长的数据时,Java执行自动类型转换,不需要在程序中做出特别的 说明。
例如,下面的语句把int型数据赋值给long型数据,在编译时不会发生任何错误:

int i = 10;
long j = i;

假若对主数据类型执行任何算术运算或按位运算,在正式执行运算之前,"比int小"的数据char、byte、short会自动转换成int,这样一来,最终生成的值就是int类型。

整型、实型、字符型数据同样可以混合运算。运算中,不同类型的数据先转化为同一种类型,然后进行运算,转换遵循从低级到高级的原则。通常,表达式中最大的数据类型是决定了表达式最终结果大小的那个类型。例如:若将一个float值与一个double值相乘,结果就是double值;如将一个int值和一个long值相加,则结果为long值。

2 强制类型转换
当两种类型彼此不兼容,或者目标类型的取值范围小于源类型时,就必须进行强制类型转换。强制类型转换的语法如下:

目标类型 变量 = 目标类型值

经过强制类型转换,将得到一个在""中声明的数据类型的数据,该数据是从指定变量所包含的数据转换而来的。例如:

int x,y;定义int型变量x,y
byte z;定义byte型变量z
强制类型转换
x = int22.11 int11.22;
y = int''a'' int''b'';
z = bytex y;

3.变量的作用域

变量的作用域是指可访问该变量的代码域。声明一个变量的同时也就指明了变量的作用域。按作用域来分,变量可以有下面几种:局部变量、类变量、方法参数、例外处理参数。局部变量在方法或方法的部分代码中声明,其作用域为它所在的代码块整个方法或方法中的某块代码。

Java语言用大括号将若干语句组成语句块,变量的有效范围是声明它的语句所在的语句块,一旦程序的执行离开了这个语句块,将无法继续调用其中的变量。例如:

if ... {
int i = 25;
...
}
System.out.println"The value of i = " i; 错误


最后一行无法进行汇编是因为变量i已经超出了作用域。i的作用域是"{"和"}"之间的代码块。在该代码块外,变量i就不存在了,所以无法调用。改正的方法是可以将变量的声明移到if语句块的外面,或者是将println方法调用移动到if语句块中。
2.2 Java运算符与表达式
2.2.1 算术运算符
算术运算符分为单目运算符和双目运算符,具体运算符如表2.5所示。
表2.5 算术运算符
类 别
运 算 符
用 法
描 述
单目运算符

op1
正值

-
-op1
负值


op1 , op2
自加1

--
op1--,--op2
自减1
双目运算符

op1 op2


-
op1-op2


*
op1 * op2



op1 op2


%
op1 % op2
取模

在算术运算中,有以下值得注意的地方。
* 算术运算符的总体原则是先乘除、再加减,括号优先。
* 整数除法会直接砍掉小数,而不是进位。
* 取模运算符的操作数可以为浮点数。如:37.2%10=7.2。这点与C语言不同。
* Java也可用一种简写形式进行运算,并同时进行赋值操作。例如,为了将10与变量x相加,并将结果赋给x,可用x =10。
* Java对加运算符进行了扩展,使它能够进行字符串的连接,如"abc" "def",得到串"abcdef"。
* 前缀 、--与后缀 、--的区别如下。
*
i前缀 在使用i之前,使i的值加1,因此执行完 i后,整个表达式和i的值均为i 1;i 后缀 在使用i之后,使i的值加1,因此执行完i 后,整个表达式的值为i,而i的值变为i 1。
* --i前缀--在使用i之前,使i的值减1,因此执行完--i后,整个表达式和i的值均为i-1;i--后缀--在使用i之后,使i的值减1,因此执行完i--后,整个表达式的值为i,而i的值变为i-1。
2.2.2 关系运算符

关系运算符用来比较两个数据,确定一个操作数与另外一个操作数之间的关系,返回布尔类型的数据true或false。关系运算符都是二元运算符,如表2.6所示。
表2.6 关系运算符
运 算 符
用 法
返回True的情况

op1 op2
op1大于op2
=
op1 = op2
op1大于等于op2

op1 op2
op1小于op2
=
op1 = op2
op1小于等于op2
==
op1 = = op2
op1等于op2
!=
op1 ! = op2
op1不等于op2

2.2.3 布尔运算符
用布尔运算符进行布尔逻辑运算时,布尔型变量或表达式的组合运算可以产生新的布尔值。布尔运算符如表2.7所示。
表2.7 布尔运算符
运 算 符
用 法
描 述

op1 op2
求与运算。如果op1为false,不计算op2
||
op1 || op2
求或运算。如果op1为true,不计算op2
!
! op1
求反运算。取与op1相反的值

2.2.4 位运算符
位运算符用来对二进制位进行操作,在Java语言中,位运算符的操作数只能为整型和字符型数据。位运算符如表2.8所示。
表2.8 位运算符
运 算 符
用 法
描 述
~
~op1
按位取反

op1 op2
按位与
|
op1 | op2
按位或
^
op1 ^ op2
按位异或

op1 op2
op1右移op2位

op1 op2
op1左移op2位

op1 op2
op1无符号右移op2位

2.2.5 赋值运算符
赋值运算符=可以把一个数据赋给另外一个变量,相当于将左边的数据放到右边的变量里面去。例如:var = data;。
* Java语言支持简单算术运算符和赋值运算符的联合作用。
* 如果左侧变量的数据类型的级别高,则把右侧的数据转换为相同的高级数据类型,然后赋给左侧的变量,如表2.9所示。
* 如果右边高,则需要使用强制类型转换运算符。
表2.9 类型转换表
原 类 型
允许自动转换的目标类型
byte
short、int、long、float、double
short
int、long、float、double
char
int、long、float、double
int
long、float、double
long
float、double
float
double
double

boolean


提示:
赋值运算符右端的表达式也可以是赋值表达式,形成连续赋值的情况,例如:a=b=c=10;。由于赋值运算符具有右结合性,因此先执行右边的运算符,但一般情况下建议不用。
在赋值符=前加上其他运算符,即构成扩展赋值运算符,如表2.10所示。例如:a = a 6用扩展赋值运算符可表示为a =
6。这样一来既可加快输入速度,又可加快计算机的运算速度。扩展赋值运算符的通用格式如下:

var op = expression

即相当于:

var = var op expression

表2.10 扩展赋值运算符及其等价表达方式
运 算 符
用 法
等价表达式
=
op1 =op2
op1=op1 op2
-=
op1-=op2
op1=op1-op2
*=
op1*=op2
op1=op1*op2
=
op1=op2
op1=op1op2
%=
op1%=op2
op1=op1%op2
=
op1=op2
op1=op1op2
|=
op1|=op2
op1=op1|op2
^=
op1^=op2
op1=op1^op2
=
op1=op2
op1=op1op2
=
op1=op2
op1=op1op2
=
op1op2
op1=op1op2

2.2.6 条件运算符
条件运算符?
:是一个特殊的操作符,它支持条件表达式,即一个简单的双重选择语句if-else的简缩。条件运算符为三元运算符,它的一般形式如下:

exp1?exp2:exp3


表达式exp1的结果为布尔型的值;表达式exp2与表达式exp3的数据类型相同;如果exp1的值为真,则表达式的值为exp2,否则为exp3。例如:

answer = type==1?right:wrong;

上面表达式表示,如果变量type的值等于1,则answer = right,否则answer =
wrong。这样利用条件运算符可以简单地实现if-else2.3.1节会详细讲解的功能。
2.2.7 表达式和运算符的优先级
表达式可以是由常量、变量、运算符、方法调用的序列,它执行这些元素指定的计算并返回某个值。在对一个表达式进行计算时,要按运算符的优先顺序从高向低进行。同一级别里的运算符具有相同的优先级,算术运算符具有左结合性,赋值运算符具有右结合性。表2.11给出了运算符的优先级。
表2.11 运算符的优先级
优 先 级
运 算 符











. []


-- ! ~
instanceof

new

*
%

-



=
=



^

|



||

?:

= =
-= *= =
%= ^=

= |= =
= =


表2.11中,"."为分量运算符,"[]"为下标运算符,"new"为内存分配运算符,"instanceof"为实例运算符。另外,在表达式中使用括号"",可以使表达式的结构更清晰,使程序更具可读性。
2.3 Java控制语句

为了完成程序状态的改变,编程语言通常使用控制语句来产生执行流,如决定程序顺序执行还是分支执行。Java的程序控制语句分为选择、循环和跳转几类。选择语句是根据表达式结果或变量状态来选择执行不同的代码。循环语句使程序能够重复执行一个或一个以上的语句。跳转语句允许程序以非线性的方式执行。下面将分析Java
的所有控制语句。如果你熟悉CC 语言,那么掌握Java语言的控制语句将很容易。事实上,Java的控制语句与CC 语言中的语句几乎完全相同。当然它们还是有一些差别的,尤其是break语句与continue语句。
2.3.1 选择结构
分支语句提供了一种控制机制,使得程序可以不执行某些语句,而转去执行特定的语句。
1.条件语句if-else
if-else语句根据判定条件的真假来执行两种操作中的一种,它的格式如下:

ifboolean-expression
statement1;
[else statement2;]

* 布尔表达式boolean-expression是返回布尔型数据的表达式。
* 每条单一的语句后都必须有分号。
* 语句statement1、statement2 可以为复合语句,这时要用大括号{}括起来。建议对单一的语句也用大括号括起来,这样程序的可读性强,而且有利于程序的扩充。{}外面不加分号。
* else子句是任选的。
* 若布尔表达式的值为true,则程序执行statement1,否则执行statement2。
* if-else语句的一种特殊形式如下:

ifexpression1{
statement1;
}else if expression2{
statement2;
}...
}else if expressionM{
statementM;
}else {
statementN;
}

else子句不能单独作为语句使用,它必须和if配对使用。else总是与离它最近的if配对。可以通过使用大括号{}来改变配对关系。
2.多分支语句switch
switch语句是Java的多路分支语句。如果程序有多个分支则可以使用switch,它提供了一个比一系列if-else-if语句更好的选择。switch语句的通用形式如下:

switch expression {
case value1:
statement1;
break;
case value2:
statement2;
break;
...
case valueN:
statementN;
break;
default:
default statement;
}

switch语句的执行过程如下:表达式的值与每个case语句中的常量作比较。如果发现一个与之相匹配的,则执行该case语句后的代码。如果没有任何case常量与表达式的值相匹配,则执行default语句。

表达式expression必须为byte、short、int或char类型。每个case语句后的值value必须是与表达式类型兼容的特定常量它必须为常量,而不是变量。重复的case值是不允许的。在case语句序列中的break语句将引起程序流从整个switch语句退出。当遇到一个break语句时,程序将从整个switch语句后的第一行代码开始继续执行。这有一种"跳出"switch语句的效果。default语句是可选的。如果没有相匹配的case语句,也没有default语句,则什么也不执行。

可以将一个switch语句作为一个外部switch语句的语句序列的一部分,这称为嵌套switch语句。在使用嵌套语句时,每个switch语句均定义了自己的块,因此外部switch语句和内部switch语句的case常量不会产生冲突。
概括起来说,switch语句有以下3个重要的特性需注意。
* switch语句不同于if语句的是,switch语句仅能测试相等的情况,而if语句可以计算任何类型的布尔表达式。也就是说,switch语句只能寻找case常量间某个值与表达式的值相匹配的情况。
*
在同一个switch语句中没有两个相同的case常量。当然,外部switch语句中的case常量可以和内部switch语句中的case常量相同。
* switch语句通常比一系列嵌套if语句更有效。
2.3.2 循环结构
循环语句的作用是反复执行某一段代码,直到满足终止循环的条件为止,一个循环一般应包括四部分内容。
* 初始化部分:用来设置循环的一些初始条件,如计数器清零等。
* 循环体部分:这是反复循环的某一段代码,可以是单一的一条语句,也可以是复合语句。
* 迭代部分:这是在当前循环结束、下一次循环开始前执行的语句,常常用来使计数器加1或减1。
* 终止部分:通常是一个布尔表达式,每一次循环都要对该表达式求值,以验证是否满足循环终止条件。
Java中提供的循环语句有while语句、do-while语句和for语句,下面分别进行介绍。
1.while循环语句
while语句是Java最基本的循环语句。当它的控制表达式为真时,while语句重复执行一个语句或语句块。它的通用格式如下:

whilecondition {
body
}

条件表达式condition为真时,循环体就会被执行;为假时,程序控制就传递到循环后面紧跟的语句行,循环体body一次也不会被执行。条件表达式可以是任何布尔表达式。如果只有单个语句需要重复,大括号可以不写。
2.do-while循环语句

do-while与while语句最大的区别是:在循环开始时,即使条件表达式为假,循环也至少要执行一次,因为它的条件表达式在循环的结尾。换句话说,do-while在一次循环结束后再测试终止表达式,而不是在循环开始的时候。do-while的通用格式如下:

do {
body
} while condition;


与while语句一样,条件表达式condition必须是一个布尔表达式。do-while循环总是先执行一次循环体,然后再判断条件表达式的真假。如果表达式为真,则循环继续;否则循环结束。
3.for循环语句
在前面的内容中曾使用过for循环,在这里将详细介绍for循环的使用。for循环是一种功能强大、结构形式灵活的循环,其通用格式如下:

forinitialization; condition; iteration {
body
}

for循环的执行过程如下:
第一步,当循环启动时,先执行其初始化initialization部分。通常,这是设置循环控制变量值的一个表达式,作为控制循环的计数器,初始化表达式仅被执行一次。

第二步,判断条件表达式condition的值,如果这个表达式为真,则执行循环体;如果为假,则循环终止。条件condition必须是布尔表达式,它通常将循环控制变量与目标值相比较。
第三步执行循环体的迭代部分。这部分通常是使循环控制变量增加或减少的一个表达式。
接下来重复循环,首先计算条件表达式的值,然后执行循环体,接着执行迭代表达式。这个过程不断重复直到控制表达式变为假。
Java语言中的for语句与C语言、C 语言中的for语句有所不同,Java允许在for循环内声明变量,如forint n=10;
n0;
n--。在for循环内声明变量时必须注意,该变量的作用域仅局限于for循环内,在for循环外,变量就不存在了。在Java中,还允许两个或两个以上的变量控制循环,即允许在for循环的初始化部分和迭代部分声明多个变量,每个变量之间用逗号分开。
值得注意的是,在JDK 1.5中,新提供了一种for循环的使用方法,即for-each循环。
2.3.3 跳转结构
跳转语句的作用是把控制转移到程序的其他部分。Java 支持 3 种跳转语句:break、continue和return。
1.break语句

在Java中,break语句主要有3种作用。第一,在switch语句中,用来终止一个语句序列,这点前面已经讲过。第二,用来退出一个循环。第三,作为goto
语句来使用。
break语句能用于任何 Java循环中,包括人们有意设置的无限循环。例如:

int i = 1;
whilei 0 {
ifi == 10 break;
i ;
}

提示: 在Java
语言中,循环的终止是由条件语句来控制的。只有在某些特殊的情况下,才用break语句来终止循环。

Java中没有goto语句,因为goto语句会破坏程序的可读性,而且影响编译的优化。但是,在有些地方goto语句对于构造流程控制是有用的并且是合法的。因此,Java定义了break语句的一种扩展形式来处理这种情况。通过使用这种形式的break,可以终止一个或者几个代码块。这些代码块不必是一个循环或一个switch语句的一部分,它们可以是任何块。而且,由于这种形式的break语句带有标签,所以可以明确指定执行从何处重新开始执行。不过,在程序设计中应尽量避免使用这种方式。

 

 

書城介紹  | 合作申請 | 索要書目  | 新手入門 | 聯絡方式  | 幫助中心 | 找書說明  | 送貨方式 | 付款方式 香港用户  | 台灣用户 | 海外用户
megBook.com.tw
Copyright (C) 2013 - 2024 (香港)大書城有限公司 All Rights Reserved.