Java程序设计与应用第 2章
Java语言基础
Java程序设计与应用
2009年 7月 27日星期一 2
学习目的:
了解 Java程序的构成
了解 Java的基本数据类型
了解 Java的运算符与表达式
了解数组的创建,定义和使用
掌握 Java流程控制语句
初步掌握 java简单程序的编写
学习重点:
Java的基本数据类型,运算符与表达式
一维数组和多维数组的创建、定义和使用
While,do-while和 for语句的使用
Java程序设计与应用
2009年 7月 27日星期一 3
第 2章 Java语言基础本章提要:
1,Java程序的构成
2,Java的基本数据类型
3,Java的运算符与表达式
4,数组
5,Java流程控制语句
Java程序设计与应用
2009年 7月 27日星期一 4
2.1 Java程序的构成
Java源程序是由类定义组成的,每个程序中可以定义若干个类,但是只有一个类是主类。在 Java Application中
,这个主类是指包含 main方法的类;在 Java Applet中,这个主类是一个系统类 Applet的子类,是 Java程序执行的入口点。在同一个 Java源程序中定义的若干类之间没有严格的逻辑关系要求,但它们通常是在一起协同工作的,每一个类都可能需要使用其他类中定义的静态属性或方法 。
Java程序中定义类使用关键字 class,每个类的定义有类头定义和类体定义两部分组成。类体部分用来定义静态属性和方法这两种类的成员,其中方法类似于其他 高级语
2.1.1一个 Java源程序
Java程序设计与应用
2009年 7月 27日星期一 5
言的函数,而静态属性则类似于变量。类头部分除了声明类名之外,还可以说明类的继承特性,当一个类被定义为是另一个已经存在的类(称为这个类的父类)的子类时,
它就可以从其父类中继承一些以定义好的类成员而不必自己重复编码。
Java程序的每一条 Java语句都由分号结束,其构成应该符合 Java的语法规则。类和方法中的所有语句应该使用一对大括号括起。 Java程序的每一个类中,除了静态属性声明语句之外,其他的执行具体操作的语句只能存在于类方法的大括号之中,而不能跳出方法孤立地直接书写在类中。
Java程序设计与应用
2009年 7月 27日星期一 6
注解是指程序中用来说明程序的文字。它是为了方便程序员理解,维护该程序,并不参与程序的编译执行。
Java的注解有 3种:
① 单行注解符号,//” 后面的单行内容不参与编译;
② 多行注解用,/*?*/” 包含起来的一段文本,中间可以换行;
③ 用,/**?*/” 包含起来的,它可以用 javadoc工具来生成 HTML形式的开发文档。
也可以在写程序的时候将某些代码注释掉以便调试程序。
2.1.1 Java的程序注解
Java程序设计与应用
2009年 7月 27日星期一 7
2.1.3 Java的的标识符与关键字
1.关键字是 Java语言保留的字符串,表示特殊的指令,而不能用来做为程序中的标识符。
2.标识符是用来代表程序中一个元素的名字,比如变量、
函数、类等。在 Java中标识符由字母、下划线、,$” 和数字组成,只能以字母、,$” 或者,_” 开头,中间不能有空格,并且不能使用关键字。但可以包含关键字作为它的名字的一部分。在 Java中中文字符也是字符,所以也可以作标识符。 Java的标识符区分大小写,而且没有长度的限制,可以为标识符取任意长度的名字。标识符的名字要有一定的意义,让人一看标识符就知道这个变量、函数的大概作用,即常说的编码规范。
Java程序设计与应用
2009年 7月 27日星期一 8
在 Java语言中,有三种基本类型,即简单类型(
整型、浮点型、字符型、布尔型等)、数组类型(整型、浮点型、字符型、布尔型等)和复合类型(类、
接口)。可以看出 Java的数据类型与 C语言相近,其不同之处在于:首先,Java的各种数据类型占用固定的内存长度,与具体的软硬件平台环境无关;其次,
Java的每种数据类型都对应一个缺省的数值,使得这种数据类型的变量的取值总是确定的。这两点分别体现了 Java的跨平台特性和安全稳定性。
2.2基本数据类型
Java程序设计与应用
2009年 7月 27日星期一 9
在 Java语言中有四种整数类型,每种类型可以使用关键字 byte,short,int和 long中的任意一个进行声明
。所有 Java编程语言中的整数类型都是带符号的数字,
不存在无符号整数。整数类型的文字可使用十进制、八进制和十六进制表示。首位为,0” 表示八进制的数值
,首位为,0x” 表示十六进制的数值。整数类型默认为
int类型,如在其后有一个字母,L” 表示一个 long值(
也可以用小写,l” )。
2.2.1 整型
Java程序设计与应用
2009年 7月 27日星期一 10
使用 char类型可表示单个字符,字符是用单引号括起来的一个字符,如‘ a’,‘ B’ 等。 Java中的字符型数据是 16位无符号型数据,它表示 Unicode集,而不仅仅是
ASCII集。
与 C语言类似,Java也提供转义字符,以反斜杠,\”
开头,将其后的字符转变为另外的含义 。
值得注意的一点是,用双引号引用的文字,就是我们平时所说的字符串类型不是原始类型,而是一个类 string
,它被用来表示字符序列。字符本身符合 Unicode 标准且上述 char类型的转义字符适用于 string。
2.2.2 字符型
Java程序设计与应用
2009年 7月 27日星期一 11
2.2.3 浮点型在 Java语言中有两种浮点数类型; float和 double。如果一个数包括小数点或指数部分,或者在数字后带有字母
F或 f( float),D或 d( double),则该数为浮点数。如果不明确指明浮点数的类型,浮点数默认为 double。
在两种类型的浮点数中,float为 32位(单精度),
double为 64位(双精度)。也就是说 double类型的浮点数具有更高的精度。
2.2.4 逻辑型逻辑类 boolean的数据类型有两种文字值,true和
false。在 Java语言中 boolean类型只允许使用 boolean值
,在整数类型和 boolean类型之间无转换计算 。
Java程序设计与应用
2009年 7月 27日星期一 12
2.2.5 变量与常量在 Java中,不同类型的数据既可以以常量的形式出现
,也可以以变量的形式出现。常量就是指在程序执行期间其值不能发生变化的数据,常量是固定的。
变量的值是可以变化的,它的定义包括变量名、变量类型和作用域几个部分。注意以下几点:
( 1)变量名必须是一个合法的标识符。变量名应具有一定的含义,
以增加程序的可读性。
( 2)变量类型可以为前面所说的任意一种数据类型。
( 3)声明一个变量的同时也就指明了变量的作用域。变量的作用域指明可访问该变量的一段代码。
( 4)变量的声明中多个变量间用逗号隔开。
( 5)在 Java程序中声明变量后,需要给该变量赋值。可以用赋值语句来初始化变量 —— 任何变量都不能没有初始值,否则无法通过编译。
Java程序设计与应用
2009年 7月 27日星期一 13
Java语言是支持两个不同数值类型之间的强制类型转换的,一个变量从一个类型强制转换到另一个类型,转化后的变量要受到新类型的制约

类型转换语法格式:
( type) variableName
类型 变量名
2.2.6数据类型的转换
Java程序设计与应用
2009年 7月 27日星期一 14
1,自动类型转换整型、浮点型、字符型数据可以混合运算。在运算中不同类型的数据先转化为同一种类型然后进行计算。自动类型转换原则是从在机器中占位( bit)少的类型向占位多的类型方向进行转换 。
2,强制类型转换在 Java语言中强制类型转换是指从在机器中占位多的类型向占位少的类型方向进行转换,例如 int类型转换成 byte类型。强制类型转换需要使用类型转换语法格式,但是有些类型是不允许转换成另一种类型的,例如 boolean类型不能转换成 int等类型。
Java程序设计与应用
2009年 7月 27日星期一 15
2.3运算符与表达式
Java语言的运算符( operator)指明对操作数所进行的运算,运算符按照操作数的数目来划分为单目运算符(例如 ~,++)、双目运算符(例如 +,>)、三目运算符(例如?:)。基本运算符包括赋值运算符、算术运算符、关系运算符、逻辑运算符、位运算符、条件运算符等。
Java语言的表达式是由标识符、数据和运算符等的组合而构成的,它基本上和 C\C++语言的表达式一样。
Java程序设计与应用
2009年 7月 27日星期一 16
2.3.1 赋值赋值运算符,=” 把一个数据赋给另一个变量。 Java
语言支持简单算术运算符和赋值运算符的作用在赋值运算符两侧的类型不一致的情况下,如果左侧变量的数据类型的级别高,则就把右侧的数据转换为与左侧相同的高级数据类型,然后赋值给左侧的变量。否则需要使用强制类型转换运算符。
在赋值符,=” 前加上其他运算符,即构成扩展赋值运算符 。用扩展赋值运算符可表示为:
var operator=expression
Java程序设计与应用
2009年 7月 27日星期一 17
2.3.2 算术运算算术运算是针对数值类型操作数进行的运算。根据需要参与运算的操作数的数目要求,可将算术运算符分为双目运算符和单目运算符两种。
1.双目算术运算符双目运算符有,+,-,*,/,%五种。要注意,/” 运算符对于与整数和浮点数的运算结果是不同的。取模运算符,%” 一般用于整数运算,它是用来得到余数部分。
2.单目算术运算符变量的自增与自减和 ++与 — 出现在该变量的前后位置无关。无论是 ++x还是 x++均表示 x要增 1,且表达式的值与运算符的位置有关。
Java程序设计与应用
2009年 7月 27日星期一 18
2.3.3 关系运算关系运算符也称为比较运算符,是用于比较两个数据之间的大小关系的运算符。关系运算结果是布尔值( true
或 false)。
2.3.4 逻辑运算逻辑运算是针对布尔型数据进行的逻辑判断运算,运算的结果仍然是布尔型量。常用的逻辑运算符有:与(
AND)、或( OR)、非( NOT)。
Java程序设计与应用
2009年 7月 27日星期一 19
2.3.5 位运算位运算是对操作数以二进制比特位为单位进行的操作运算,位运算的操作数和结果都是整型量。
1.移位运算符移位运算符是将某一变量所包含的各比特位按指定方向移动指定的位数,移位运算符通过对第一个运算对象向左移位或向右移位来对数据执行位操作,移动的位数由右边的操作数决定,移位的方向取决于运算符本身。
2.按位逻辑运算位运算符 &,|、~,^分别提供了基于位的与、或、
求反、异或操作。其中异或是指对应的两位数值不同时,
结果为 1,否则为 0。
Java程序设计与应用
2009年 7月 27日星期一 20
2.3.6 其他运算几点说明:
1.条件运算符是唯一的一个三目运算符,其结构如下:
条件?表达式 1:表达式 2
其含义是如果条件的计算结果为真,则结果为表达式 1的计算结果,否则为表达式 2的计算结果。
2.instanceof 用来决定第一个运算对象是否为第二个运算对象的一个实例。
Java程序设计与应用
2009年 7月 27日星期一 21
2.3.7 运算符的优先级运算符的优先级决定了表达式中执行不同运算的先后顺序,在运算符优先级相同时,运算的进行次序取决于运算符的结合性 。
运算符的结合性分为左结合和右结合,左结合就是按照从左向右的次序计算表达式,而右结合就是按照从右到左的次序计算表达式。
Java程序设计与应用
2009年 7月 27日星期一 22
2.4 数组
Java语言中,数组是一种最简单的复合数据类型。数组的主要特点如下:
1.数组是相同数据类型的元素的集合;
2.数组中的各元素是有先后顺序的,连续存放在内存之中;
3.每个数组中的元素用整个数组的名字和它在数组中的位置
(称为下标)表达。
Java程序设计与应用
2009年 7月 27日星期一 23
2.4.1数组声明、创建、初始化
1.声明数组声明数组是定义一个数组的名称、维数和数组元素的类型。有两种定义格式,
格式 1:数组元素类型 数组名 [ ];
格式 2:数组元素类型 [ ] 数组名;
其中数组元素的类型可以是基本类型,也可以是类或接口 。
2.创建数组数组声明只是定义了数组名和类型,并未指定元素的个数。与变量一样,数组的每个元素需要占用存储空间,因此必须通过某种方式规定数组的大小,进而确定数组需要的空间。给已声明的数组分配空间可采用如下格式:
数组名 = new 数组元素类型 [数组元素个数 ]
Java程序设计与应用
2009年 7月 27日星期一 24
也可以在声明数组的同时给数组规定空间,一旦数组创建以后,数组就有了固定长度的结构,数组中各元素通过下标来区分,下标从 0开始,下标最大值为数组元素的个数减 1。当数组的元素类型为基本类型时,在创建存储空间时将按照默认规定给各元素赋初值。
3.数组的初始化给数组元素分配空间和赋初值可以采取以下方式:
声明数组时给数组一个初值表,格式如下:
类型 数组名 [ ]= {初值表 };
所有的数组都有一个属性 length,它代表了数组元素的个数。使用数组时,要注意下标不要超出范围。如果下标超出范围,则运行时会产生“数组访问越界异常
”。
Java程序设计与应用
2009年 7月 27日星期一 25
2.4.2 数组使用在方法调用中,数组也可以作为方法参数来传递。但要注意数组是属于引用类型的参数传递,也就是在方法中对虚参数组的操作会影响实参数组。
在 Java语言应用程序的 main方法中有一个字符串数组参数,该数组中存放所有的命令行参数,命令行参数是给
Java语言应用程序提供数据的手段之一,它跟在命令行运行的主类名之后,各参数之间用空格分隔。使用命令行参数有利于提高应用程序的通用性。
如果命令行参数中有引号,则两个引号之间的字符系列为一个参数,空格作为参数的分隔符。如果引号不匹配
,则从最后一个引号到行尾的所有字符将作为一个参数。
Java程序设计与应用
2009年 7月 27日星期一 26
2.4.2 多维数组
Java语言中,多维数组被看作数组的数组,多维数组的定义是通过对一维数组的嵌套来实现的。即用数组的数组来定义多维数组。多维数组中最常用的是二维数组,下面主要以二维数组为例介绍多维数组的使用。
1.声明数组二维数组的声明与一维数组类似,如下所示:
格式 1:数组元素类型 数组名 [][]
格式 2:数组元素类型 [][] 数组名;
Java程序设计与应用
2009年 7月 27日星期一 27
2.二维数组的创建和初始化为二维数组创建存储空间有两种方式:
直接为每个一维数组分配空间;
从最高维开始,按照由高到低的顺序为每一维数据分配空间
Java语言中,由于把二维数组看作是数组的数组,不要求二维数组中每一维数组的大小相同。
要获取数组的行数,可以通过如下方式获得:数组名,length
要获取数组的列数则要先确定行,再通过如下方式获取列数,数组名 [行标 ].length
在二维数组创建空间时,如果元素是基本类型,系统将按照默认规则赋初值;如果元素类型为其他引用类型,
则其所有元素为未赋初值状态( null)。但可以在数组定义时同时进行初始化。
Java程序设计与应用
2009年 7月 27日星期一 28
2.5 流程控制语句流程控制语句是用来控制程序中各语句执行顺序的语句,使程序设计中非常关键和基本的部分。流程控制语句可以把单个的语句组合成有意义的、能完成一定功能的小模块。最主要的流程控制方式是结构化程序设计中规定的三种基本流程结构。
2.5.1结构化程序设计的三种基本流程结构化程序设计原则是公认的面向过程编程应遵循的原则,它使得程序段的逻辑结构清晰、层次分明,有效地改善了局部程序段的可读性和可靠性,保证了程序质量,提高了程序开发的效率。
Java程序设计与应用
2009年 7月 27日星期一 29
结构化程序设计的最基本原则是:任何程序都是可以由三种基本流程结构构成,即顺序结构、分支结构和循环结构。
Java程序设计与应用
2009年 7月 27日星期一 30
三种流程结构的主要特点是:
均为单入单出结构,每种结构仅有一个入口点,
结构执行完毕后,仅有一个出口点。
顺序结构和选择结构为开放式结构,执行完后立即退出;而循环结构为封闭式结构,只要满足条件则反复执行结构内的语句。
三种基本结构可以相互嵌套。
Java程序设计与应用
2009年 7月 27日星期一 31
2.5.2 顺序结构顺序结构是三种结构中最简单的一种,即语句按照书写的顺序依次执行。从宏观上来看,整个程序就是一个顺序结构。
2.5.3 选择结构
Java中的分支结构可以由两种选择语句来实现,一个是实现双选择的 if语句,另一个是实现多分支的 switch开关语句。
Java程序设计与应用
2009年 7月 27日星期一 32
1.if语句
if语句的一般形式是:
if(条件表达式)
语句块; //if分支
else
语句块; //else分支块其中条件表达式用来选择判断程序的流程走向。在程序的实际执行过程中,如果条件表达式的取值为真,则执行 if分支的语句块,否则执行 else分支的语句块。
在编写程序时,也可以不书写 else分支,此时若条件表达式的取值为假,则绕过 if分支直接执行 if语句后的其他语句。有时也会用到 if-else复合结构。但要注意 else
字句不能单独作为语句使用,它必须和 if配对使用。
Java程序设计与应用
2009年 7月 27日星期一 33
2.switch语句
switch语句是多分支的开关语句,它的一般格式如下:
switch(表达式 )
{ case 判断值 1:语句块 1; //分支 1
case 判断值 2:语句块 2; //分支 2

case 判断值 n:语句块 n; //分支 n
default:语句块 n+1 //分支 n+1
}
switch语句执行时,首先计算表达式的值,这个值必须是整型或字符型,同时应与各个 case分支的判断值的类型相一致。计算出表达式的值之后,将它先与第一个 case
分支的判断值相比较。若相同,则程序转入第一个 case分
Java程序设计与应用
2009年 7月 27日星期一 34
支的语句块;否则,再将表达式的值与第二个分支相比较
依此类推。如果表达式的值与任何一个 case分支都不相同,则转而执行最后的 default分支;在 default分支不存在的情况下,则跳出整个 switch语句。各个 case和 default
出现的次序不影响执行的结果。
需要注意各个 case后面的常量不能有相同的值。还有各个语句块可以有多条语句,不必使用大括号。 switch语句也允许嵌套。还要注意的是,switch语句的每一个 case判断,
都只负责指明流程分支的入口点,而不负责指定分支的出口点,分支的出口点需要编程时用相应的跳转语句来标明。
Java程序设计与应用
2009年 7月 27日星期一 35
2.5.4 循环结构循环结构是利用循环语句来实现的。循环语句是在一定条件下反复执行一段代码,被反复执行的程序段称为循环体。 Java语言中提供的循环语句有三种,while语句、
do-while语句,for语句。
Java程序设计与应用
2009年 7月 27日星期一 36
1.while语句
while语句的一般形式是:
while (条件表达式 )
循环体
while语句的执行时,首先检查表达式的值是否为真
,若为真,则执行循环体,然后继续判断是否继续循环,
直到表达式的值为假,直到表达式的值为假,执行后续语句。循环体通常是一个组合语句,也可以是单个语句。
while循环的特点是“先判断,后执行”。如果条件已开始就不满足,则循环执行为 0次。另外,在循环体中通常通过执行某个操作来改变循环条件,如果循环条件不改变,则循环会陷入死循环中。在程序设计中要避免死循环。
Java程序设计与应用
2009年 7月 27日星期一 37
2.do-while语句如果需要在任何情况下都先执行一遍循环体,则可以采用 do-while循环,它的格式如下:
do
{
循环体
}while(条件表达式)
do-while循环的特点是:“先执行,后判断”,在执行时,先执行循环体的语句,在检查表达式,若表达式的值为真,则继续执行循环体,否则,结束循环,执行后续语句。与 while循环相比,循环体至少要执行一次。
Java程序设计与应用
2009年 7月 27日星期一 38
3.for语句
for语句一般用于事先能够确定循环次数的场合,其格式为:
for(控制变量设定初值;循环条件;迭代部分)
循环体
for语句执行时,首先执行初始化操作,然后判断终止条件是否满足,如果满足,则执行循环体中的语句,最后通过执行迭代部分给控制变量增值。完成一次循环后,
重新判断终止条件。
使用 for循环要注意一下几点:
初始化、终止条件以及迭代部分都可以为空(但分号不能少),三者均为空时,相当于一个无限循环。
在初始化部分和迭代部分可以使用逗号表达式,来进行多个操作。
Java程序设计与应用
2009年 7月 27日星期一 39
2.5.5 跳转语句
4.循环嵌套三种循环语句可以自身嵌套,也可以相互嵌套
。嵌套将循环分为内外两层,外层循环每循环一次
,内层循环要执行一圈。注意编写嵌套循环时,不能出现内外循环的结构交叉现象。
1.break语句在 switch语句中,break语句已经得到应用。
在各类循环语句中,break语句也提供了一种方便的跳出循环的方法。它有两种使用形式:
Java程序设计与应用
2009年 7月 27日星期一 40
break
//不带标号,从 break直接所在处的循环体中跳转出来
break 标号名
//带标号,跳出标号所指的代码块,执行块后的下一条语句给代码块加标号的格式如下:
BlockLabel,{codeBlock}
2.continue语句
continue语句用来结束本次循环,跳过循环体中下面尚未执行的语句,接着进行终止条件的判断,以决定是否继续循环
。对于 for语句,在进行终止条件的判断前,还要先执行迭代语句。它有两种形式:
continue //不带标号,终止当前一轮的循环,继续下一轮循环
continue 标号 //带标号,跳转到标号所指示的外层循环中
Java程序设计与应用
2009年 7月 27日星期一 41
2.6 本章小结本章是 Java语言程序设计的基础,该章主要是对程序的组成元素和逻辑进行介绍。
Java语言中的数据类型有简单数据类型和复合数据类型两种,其中简单数据类型包括整数类型、浮点数类型、字符类型和布尔类型;复合数据类型包括类、接口和数组。
表达式是由运算符和操作数组成的符号序列,对一个表达式进行运算时,要按照运算符的优先顺序从高到低进行,同级的运算符则按照结合性决定运算次序。
Java程序设计与应用
2009年 7月 27日星期一 42
数组是具有相同类型元素的有序集合,数组的创建分为定义、分配内存以及初始化等阶段。通过下标变量访问数组中的元素。经常用循环语句来控制对数组元素的访问,但要注意访问不要越界 。
条件语句、循环语句和跳转语句是 Java语言中常用的控制语句。对这些语句的正确理解和运用非常重要。程序设计的关键是要将算法思路转化为可实现的语句。