第2章 Java语言基础_第1页
第2章 Java语言基础_第2页
第2章 Java语言基础_第3页
第2章 Java语言基础_第4页
第2章 Java语言基础_第5页
已阅读5页,还剩113页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、第2章 Java语言基础 (参考教材第2章) n任何程序设计语言都是由任何程序设计语言都是由语言规范语言规范和一系和一系列列开发库开发库组成的。组成的。n Java语言也是由语言也是由Java语言规范和语言规范和Java开发开发包组成的。包组成的。n 学习任何程序设计语言,都是要从这两方学习任何程序设计语言,都是要从这两方面着手,尤其是要能够熟练地使用后者。面着手,尤其是要能够熟练地使用后者。Java语言组成语言组成1、Java语言基本元素2、Java数据类型3、Java语言结构4、Java控制语句5、Java数组6、Java类定义规范7、Java开发类库组成语言规范语言规范开发类包开发类包

2、掌握掌握Java编程语言的基本语法编程语言的基本语法基本元素基本元素 基本数据类型基本数据类型运算符与表达式运算符与表达式类型转换类型转换掌握程序的流程控制掌握程序的流程控制本本 章章 教教 学学 内内 容容n 2.1 Java语言基本元素 程序的组成元素: u 标识符标识符是指程序中使用的各种数据对象如是指程序中使用的各种数据对象如类、对象、变量、常量、方法等的名称的有类、对象、变量、常量、方法等的名称的有效字符序列效字符序列类名、方法(函数) 名、变量名标识符是以字母,下划线(_),美元符($)开头,后面跟字母、 数字、 下划线、 美元符构成的字符序列。2mail room#identif

3、ier userName_sys_value $change合法的标识符非法的标识符命名规则:说明:各种数据对象的名字各种数据对象的名字, , 最好能起最好能起“见名见名知意知意”. .JavaJava区分字母大小写,没有长度限制区分字母大小写,没有长度限制. . ValueValue、valuevalue不同的标识符。不同的标识符。JavaJava约定在代码中变量名一般以小写字约定在代码中变量名一般以小写字母开头,类名一般以大写字母开头。母开头,类名一般以大写字母开头。尽量避免以尽量避免以_ _、$ $开头开头, ,原因是使用本地原因是使用本地方法方法(JNI)(JNI)的一些的一些C C库

4、名这样使用。库名这样使用。J a v aJ a v a 语 言 使 用 国 际 字 符 格 式 标 准语 言 使 用 国 际 字 符 格 式 标 准(UnicodeUnicode)和浮点数)和浮点数(IEEE 754)(IEEE 754)。u关键字与保留字n关键字(keyword)是Java语言事先声明的,有特定语法含义的标识符,不允许编程人员使用。n保留字(reserved word)他是Java 预留的关键字,他们虽然现在没有作为关键字,但在以后的升级版本中有可能作为关键字。n很多情况下, 保留字等同于关键字int double long byte short float char str

5、ing boolean enumfor continue do. whileif else switch.casethrow throws try catch finally assertclass extends implements interfacepublic private protected abstract staticfinal transient nativenew void false true null return this super import package breakdefault synchronized instanceof volatile strict

6、fpJavaJava关键字关键字: :注意:n在在JavaJava中,中,truetrue、falsefalse和和nullnull都是小写的。都是小写的。区别于区别于C+C+中大写的中大写的TRUETRUE、FALSEFALSE和和NULLNULL。n在在JavaJava中,中,truetrue、false false 不能数字化不能数字化。Q: goto, constQ: goto, const可否用作标识符可否用作标识符? ?N: N: 保留字(无含义但不能使用)保留字(无含义但不能使用)nconstconst、gotogoto是是JavaJava的保留字。的保留字。nfriendfri

7、end、sizeofsizeof不是不是JavaJava的关键字的关键字u分隔符分隔符就是用来分隔不同字符串的标记字符,以便编译器能够确认源程序在何处分隔。Java语言中,分隔符分为注释符、空白符和普通分隔符3种类型。; ;(分号):语句(分号):语句(statementstatement)结束符)结束符,(逗号):分隔变量声明中连续的标,(逗号):分隔变量声明中连续的标识符,或在识符,或在forfor语句中连接语句。语句中连接语句。. .(句号):用于分隔包、子包和类,或(句号):用于分隔包、子包和类,或分隔引用变量中的变量和方法。分隔引用变量中的变量和方法。空白分隔符空格,空格,Tab制表

8、符、回车符或换行符制表符、回车符或换行符普通分隔符() () (括号括号) ):用于在方法定义和访问:用于在方法定义和访问中将参数表括起来,或在表达式中定义中将参数表括起来,或在表达式中定义运算的先后次序,或在控制语句中将表运算的先后次序,或在控制语句中将表达式和类型转换括起来。达式和类型转换括起来。 (方括号):用于声明数组类型(方括号):用于声明数组类型及引用数组的元素值。及引用数组的元素值。 ( (花括号花括号) ):它将若干个语句序:它将若干个语句序列括起来作为一个程序列括起来作为一个程序代码块代码块, ,或为数组或为数组初始化时赋值。初始化时赋值。普通分隔符Java type sys

9、temprimitivereferencenullcharnumericbooleanclassinterface arrayintegralfloating-pointbyteshortintlongfloatdouble基本数据类型基本数据类型引用数据类型引用数据类型n 2.2 基本数据类型数据类型定义了数据的性质、取值数据类型定义了数据的性质、取值范围、存储方式以及对数据所能进范围、存储方式以及对数据所能进行的运算和操作。行的运算和操作。n 所有基本数据类型所占的位数都是确定的,并不所有基本数据类型所占的位数都是确定的,并不因操作系统的不同而不同。因操作系统的不同而不同。n 所有基本数据

10、类型的关键字都是小写的所有基本数据类型的关键字都是小写的。n十进制:用多个十进制:用多个0 09 9之间的数字表示,如之间的数字表示,如123123和和-100-100,其首位不能为,其首位不能为0.0.n八进制:以八进制:以0 0打头,后跟多个打头,后跟多个0 07 7之间的之间的数字,如数字,如01230123。n十六进制:以十六进制:以0 x0 x或或0X0X打头,后跟多个打头,后跟多个0 09 9之间的数字或之间的数字或a af f之间的小写字母或之间的小写字母或A AF F之间之间的大写字母的大写字母u整型整数有正整数、零、负整数整数有正整数、零、负整数。n Java的四种整型 类类

11、 型型数据位数据位范范 围围 字节型字节型byte8-128127,即,即-2727-1 短整型短整型short16-3276832767,即,即-215215-1 整型整型int32-21474836482147483647即即-231231-1 长整型长整型long64-92233720368547758089223372036854775807,即,即-263263-1说明:n长整数以长整数以l l或或L L结尾:结尾: 1212l l, -343, -343L Ln以以l l或或L L结尾的数字,无论其实际值所属结尾的数字,无论其实际值所属范围怎样,都被用作范围怎样,都被用作longl

12、ong型整数型整数n为了解决不同机器上的字节存储顺序问为了解决不同机器上的字节存储顺序问题,用题,用bytebyte类型来表示整型数比较好。类型来表示整型数比较好。n整型常量默认为整型常量默认为intint类型。类型。n与与C/C+C/C+不同,不同,JavaJava中没有无符号型整数中没有无符号型整数u浮点型nJavaJava用浮点型由整数部分和小数部用浮点型由整数部分和小数部分组成。分组成。n标准计数法:由整数部分、小数点标准计数法:由整数部分、小数点和小数部分构成,如和小数部分构成,如1.0,123.451.0,123.45等。等。n科学计数法:由十进制整数、小数科学计数法:由十进制整数

13、、小数点、小数和指数部分构成,指数部分由点、小数和指数部分构成,指数部分由字母字母E E或或e e跟上带正负号的整数表示,如跟上带正负号的整数表示,如123.45123.45可表示为可表示为1.2345E+21.2345E+2。 nJavaJava的两种浮点型的两种浮点型 类类 型型数据位数据位范范 围围 单精度浮点单精度浮点(float)323.4E-0383.4E+038 双精度浮点双精度浮点(double)641.7E-3081.7E+308说明:n浮点数默认为双精度数浮点数默认为双精度数n3232位浮点数以位浮点数以f f或或F F结尾:结尾: 0.23f0.23fu字符型n字符型数据

14、代表字符型数据代表16位的位的Unicode字符字符n字符型数据的缺省值为字符型数据的缺省值为u0000n示例示例nchar c2 = 0; 赋初值为字符赋初值为字符0nchar c3 = 32; 用整数赋初值为用整数赋初值为空格转义字符:反斜杠“”开头n反斜线(反斜线(Backslash)n退格(退格(Backspace)bn回车(回车(Carriage return)rn进纸符(进纸符(Form feed)fn制表符(制表符(Form feed)tn换行(换行(New line)nn单引号(单引号(Single quote)n八进制数(八进制数( 0377 ) DDDnUnicode字符字

15、符uHHHHu布尔型n布尔型(Boolean)true和false两个值ntrue和false不能转换成数字表示形式。n所有关系运算(如ab)的返回值都是布尔型的值。n布尔型也用于控制语句中的条件表达式,如if、 while、 for等语句。n为什么在Java中没有sizeofsizeof操作符?n 2.3 枚举类型枚举类型是一个是一个常量常量集合的数据类型。集合的数据类型。使用使用enum关键字声明枚举类型的语法如下关键字声明枚举类型的语法如下: enum 枚举名称枚举名称 枚举常量枚举常量1, , 枚举常量枚举常量n默认情况下默认情况下,第,第1个枚举常量的值为个枚举常量的值为0,后面,后

16、面每个枚举常量的值依次递增每个枚举常量的值依次递增1。例如,声明了一个表示颜色的枚举类型例如,声明了一个表示颜色的枚举类型ColorColor。 enum Color RED, WHITE, BLUE ; enum Color RED, WHITE, BLUE ;1. 1. 对于枚举常量,可以直接通过枚举类型名使对于枚举常量,可以直接通过枚举类型名使用他们用他们. . 例如输出枚举常量例如输出枚举常量WHITEWHITE。 System.out.println(Color.WHITE);System.out.println(Color.WHITE);2. 2. 要想获取与枚举常量关联的整数,需

17、要使用要想获取与枚举常量关联的整数,需要使用ordinalordinal方法,如下面的语句将输出数字方法,如下面的语句将输出数字1 1。System.out.println(Color.WHITE).System.out.println(Color.WHITE).ordinalordinal()(););n 2.4 变量与常量数据类型实际上是一块内存空间,数据类型实际上是一块内存空间,他可以存储一个特定类型的值。他可以存储一个特定类型的值。他是以他是以常量常量或或变量变量的形式出现在程的形式出现在程序中。序中。根据存储的数据类型不同,常量和根据存储的数据类型不同,常量和变量可以分为整型、浮点型

18、、字符变量可以分为整型、浮点型、字符型、字符型和布尔型等。型、字符型和布尔型等。n变量变量程序运行期间,其值可以改变。程序运行期间,其值可以改变。n变量具有三个基本要素:名字、类型和变量具有三个基本要素:名字、类型和值。值。nJavaJava的每个变量都具有一种的每个变量都具有一种类型类型,变量,变量的类型决定了变量的数据性质和范围、变量的类型决定了变量的数据性质和范围、变量存储在内存中所占的大小(字节数)以及对存储在内存中所占的大小(字节数)以及对变量可以进行的合法操作等。变量可以进行的合法操作等。u变量变量声明格式数据类型数据类型 变量名变量名 = =初值初值,变量名变量名=初初值值说明说

19、明: :(1)(1)变量名是一个合法的标识符,变量名变量名是一个合法的标识符,变量名的长度没有限制的长度没有限制(2)(2)数据类型是变量所属的数据类型数据类型是变量所属的数据类型(3)(3)中内容是可选项中内容是可选项示例:int i;int i,j,k; int i=0;float x=3.14f;double y=3.1415926;boolean truth=true;char c=A;n建议一行只声明一个变量。如果在一行建议一行只声明一个变量。如果在一行声明多个变量,变量之间必须用逗号隔声明多个变量,变量之间必须用逗号隔开开。nJavaJava为强类型语言,变量先声明后使用。为强类型

20、语言,变量先声明后使用。声明位置任意。声明位置任意。n在使用变量前,变量必须有确定的值。在使用变量前,变量必须有确定的值。n赋值语句;声明变量的同时进行初始化赋值语句;声明变量的同时进行初始化注意注意:n 常量是指程序运行期间,其值不能改变。n Java约定常量标识符全部用大写字母表示。 u常量n 变量与常量(续)n常量声明的形式与变量声明基本一样,只需常量声明的形式与变量声明基本一样,只需关键字关键字finalfinal标识,通常标识,通常finalfinal写在最前面。写在最前面。final final intint globalAccountglobalAccount = 100, =

21、100, final double PI=3.14159final double PI=3.14159C C、C+C+是通过是通过#define#define命令把一个标识符命令把一个标识符 定义为常量定义为常量n2.5 运算符与表达式n任何语言都有自己的运算符,其作用任何语言都有自己的运算符,其作用是与参与运算的数据组成表达式来完成是与参与运算的数据组成表达式来完成相应的运算。对不同的数据类型,有着相应的运算。对不同的数据类型,有着不同的运算符。不同的运算符。nJavaJava语言中的运算符主要包括算术运语言中的运算符主要包括算术运算符、关系运算符、条件运算符、逻辑算符、关系运算符、条件运算

22、符、逻辑运算符、位运算符运算符、位运算符5 5大类。大类。u算术运算符Java的算术运算符分为一元运算符和二元运算符。一元运算符只有一个操作数,而二元运算符有两个操作数参加运算。n运算符与表达式(续)(1)一元运算符 取反(-),自增1(+)和自减1(-) 一元运算符与操作数之间不允许有空格。 自增和自减运算符可以用在变量的前面,也可用在变量的后面,但其运算结果是不同。n运算符与表达式(续)示例:int i=10, j, k, m, n;j=+i; k=-i; m = i+; m = +i; n=i-; n=-i; n运算符与表达式(续)(2)二元运算符 加(+),减(-),乘(*),除(/)

23、取余(%) 五种运算符均适用于整型和浮点型。当在不同数据类型的操作数之间进行算术运算时,所得结果的类型与与占内存空间字节数多的类型一致。与C/C+不同,参与%运算的操作数可以为浮点数. 运算结果的符号与被除数相同n运算符与表达式(续)7/2= 7.0/2= 7%2= 7.0%2= -7%2= 7%-2= 示例: 3 /整除 3.5 /除法 1 /余数为整数 1.0 /余数为浮点数 -1 /结果的符号与被除数相同 1n运算符与表达式(续)赋值运算的作用是使变量获得值。赋值的格式如下:变量名 = 表达式(3)赋值运算赋值的运算次序是从右向左的,即先计算的值,再将表达式的结果值赋给。n运算符与表达式

24、(续)int i,j;i=10; i=i+1; j=i+10;注意: 赋值中的变量名必须已声明,而且表达式必须能计算出确定值,否则将产生编译错误。n运算符与表达式(续)示例:u关系运算符n关系运算符用于比较两个值之间的大小,结果返回布尔值。n关系运算符有6种:等于(=),不等于(!=)、大于(),大于等于(=),小于()和小于等于(=)示例示例: : 3=2 / 3=2 /结果值为结果值为falsefalse A A a a/结果值为truen运算符与表达式(续)u条件运算符Java语言提供了高效简便的三元条件运算符(?:)。该运算符的格式如下:表达式1? 表达式2:表达式3n运算符与表达式(

25、续)n先计算的值,当的值为true时,则将的值作为整个表达式的值;当的值为false时,则将的值作为整个表达式的值。n总是返回表达式2,表达式3中占内存空间字节数多的那种类型。n三目条件运算符的运算顺序是从右到左,即具有右结合性,其优先级高于赋值运算符。n运算符与表达式(续) a = (xy)? x: w int x=55,y= 28, z=31,w=9,a; int x=55,y= 28, z=31,w=9,a; a = (xy)? x: (zy)? x: (zw)?z:w示例:n运算符与表达式(续)条件运算符可以嵌套使用条件运算符可以嵌套使用。u逻辑(布尔)运算符Java的布尔运算符有:逻

26、辑与()、逻辑或(| )、逻辑非(!)布尔运算符只能处理布尔值,所得结果都是布尔值。n运算符与表达式(续)逻辑运算符的真值表ABA&BA|B!Afalsefalsefalsefalsetruetruefalsefalsetruefalsefalsetruefalsetruetruetruetruetruetruefalsen运算符与表达式(续)注意注意: 短路现象:当对某个逻辑表达式从左向右依次逐个计算条件是否成立时,一旦发现有一个条件不成立,就立即终止计算并且得到整个表达式的结果值示例: boolean1=(101);n运算符与表达式(续)2 2位运算符nJava的位运算符有:非(

27、)、与()、或(|)、异或()、右移()、左移()。nJava的位操作数只限于字符和整数。对char,byte或者short进行移位处理时,系统会先将他们转换成一个int,然后再进行移位处理n运算符与表达式(续) 位运算符的真值表位运算符的真值表ABA&BA|BABA000001100110010111111100n运算符与表达式(续)4-56|264&2=0624922124示例:等价于二进制 0000010011111011等价于二进制 0110|00100110等价于二进制0100&00100000等价于二进制011000100100(异或)1001右移2位为00

28、100001左移2位为0100n运算符与表达式(续) aa=0; a0=a; 如果如果c=ab,则有,则有a=cb;即对数;即对数a进进行两次行两次异或异或运算可又得到数运算可又得到数a。 应用:加密。应用:加密。例子例子class BitDemo public static void main(String args) char a1=十十, a2=点点, a3=进进, a4=攻攻; char secret=8; a1=(char)(a1secret); a2=(char)(a2secret); a3=(char)(a3secret); a4=(char)(a4secret); System

29、.out.println(密文密文:+a1+a2+a3+a4); a1=(char)(a1secret); a2=(char)(a2secret); a3=(char)(a3secret); a4=(char)(a4secret); System.out.println(原文原文:+a1+a2+a3+a4); u复合运算符n运算符与表达式(续)复合运算符复合运算符就是将赋值运算符与其他就是将赋值运算符与其他算术运算符组合成简捷使用方式,从算术运算符组合成简捷使用方式,从而简化一些常用的表达式。而简化一些常用的表达式。u复合运算符运算符用 法等价于说 明+s+is=s+is,i是数值型是数值型-

30、=s-=is=s-is,i是数值型是数值型*=s*=is=s*is,i是数值型是数值型/=s/=is=s/is,i是数值型是数值型%=s%=is=s%is,i是数值型是数值型&=a&=ba=a&ba,b是布尔型或整型是布尔型或整型|=a|=ba=a|ba,b是布尔型或整型是布尔型或整型=a=ba=aba,b是布尔型或整型是布尔型或整型=s=is=s=s=is=sis,i是整型是整型=s=is=sis,i是整型是整型n运算符与表达式(续)u其他运算n运算符与表达式(续)n方括号是数组运算符,方括号中的数值是数组的下标,整个表达式就代表数组中该下标所在位置的元素值。n括号(

31、)用于改变表达式中运算符的优先级。 对象运算符instanceof用来测试一个指定对象是指定类或它的子类的对象,若是则返回true,否则返回false.点运算符“.”的作用有两个:一是引用类中成员,二是分隔包的各个域。n运算符与表达式(续) 运算符的优先级 优先级运算符结合性1. () ; ,左2+ - += ! + -(一元)右3* / %右4+ - (二元)右5 右6 = instanceof右7= !=右n运算符与表达式(续)优先级运算符结合性8&右9右10|右11&右12|右13? :左14= *= /= %= += -= = = &= = |=左n运算符与表达

32、式(续)运算符的优先级运算符的优先级(溃疡患者确实需要大量的C(维生素)助记词助记词操作符类型操作符类型操作符操作符UlcerUnary(一元操作符一元操作符)+(正正)、-(负负)、+、-AddictsArithmetic(算术及移位操作算术及移位操作符符)*、/、%、+、-、ReallyRelational(关系操作符关系操作符)、=、 B ? X : YA LotAssignment(赋值操作符赋值操作符)=(及复合赋值及复合赋值)u表达式n表达式是算法语言的基本组成部分,它表示一种求值规则,通常由操作数和运算符组成。n操作数是参加运算的数据,可以是常数、常量、变量或方法引用。n表达式中

33、出现的变量名必须已经被初始化。n运算符与表达式(续)n表达式按照运算符的优先级进行计算,求得一个表达式的值。n运算符中圆括号的优先级最高,运算次序是“先内层后外层”,因此先计算由圆括号括起来的子表达式,圆括号还可以多级嵌套。n大多运算符按照从左向右的次序进行计算,少数运算符的运算次序是从右向左的,如赋值运算符、三元条件运算符等。 n运算符与表达式(续)n整型、实型、字符型数据可以整型、实型、字符型数据可以混合运算混合运算。运算。运算中,不同类型的数据先转化为同一类型,然后中,不同类型的数据先转化为同一类型,然后进行运算进行运算. .n转换规则是转换规则是就高不就低就高不就低,即将参与运算的操作

34、,即将参与运算的操作数统一转化为运算表达式中占内存空间字节数数统一转化为运算表达式中占内存空间字节数最多的数据类型。最多的数据类型。n类型转换u自动类型转换n从低级到高级从低级到高级:低低-高高byte,short,char int long float double操作数操作数1类型类型操作数操作数2类型类型转换后的类型转换后的类型byte、short、charintbyte、short、char、intlongbyte、short、char、int、longfloatbyte、short、char、int、long、floatdoubleintlongfloatdoublen类型转换(续)

35、对于赋值操作,如果下列2个条件都能满足,那么将一种类型的数据赋给另外一种类型变量时,将执行自动类型转换,此时称为赋值相容。这2种类型是兼容的。数字类型彼此兼容。数字类型和字符类型或布尔类型不兼容。字符类型和布尔类型互不兼容。目标类型数据比原类型数据所占内存空间大。n类型转换(续)long bigValue=99L; long bigval=6; double z=12.414F /类型相同 /6是int,自动转化为long /12.414F是float,赋值相容示例:n类型转换(续)n类型转换(续)u强制类型转换 为了实现两种数据类型为了实现两种数据类型兼容兼容,但所占内存,但所占内存空间字节

36、数由空间字节数由“大大”到到“小小”的转换,必须的转换,必须进行强制类型转换。进行强制类型转换。 强制类型转换的语法为:强制类型转换的语法为: ( (转化后目标类型转化后目标类型) )原类型数据;原类型数据;小结:小结:短类型 长类型:默认(promotion) byte, short, char, int, long, float, double长类型 短类型:强制(casting)举例:举例: int a ; long b ; b = a ; (放大放大) a = ( int ) b ; (缩小缩小)注意注意: : boolean型变量型变量与其它基本类型不能相互转换与其它基本类型不能相互

37、转换 当当把把int 型的值赋给型的值赋给byte型变量时,如果型变量时,如果int 型的型的值超出值超出byte类型的取值范围,那么将类型的取值范围,那么将int型值对型值对byte型的值域型的值域取模取模,然后再赋给,然后再赋给byte型变量。型变量。当当把浮点数的值赋给把浮点数的值赋给int型变量时,先型变量时,先去掉去掉小数小数部分。如果浮点数的值超出部分。如果浮点数的值超出int类型的取值范围,类型的取值范围,类似地,也对目标类型的值域类似地,也对目标类型的值域取模取模,然后再赋,然后再赋给给int型变量。型变量。示例示例: byte b; int i=265; b=(byte)i;

38、265%256 = 9b=?按程序的执行流程,程序的控制结构可分为3种:顺序结构分支结构循环结构 u程序控制结构程序控制结构n 流程控制流程控制顺序结构顺序结构入口点语句 1语句 2出口点分支结构分支结构入口点语句 1语句 2出口点布尔表达式true falsen 流程控制流程控制( (续续) )循环结构循环结构入口点语句 1出口点布尔表达式true falsen 流程控制流程控制( (续续) )共同特点:共同特点: 只有一个入口点,并且只有一个出口点。 结构内的每一部分都有机会被执行。也就是说,对每一个框来说,都应当有一条从入口到出口的路径通过它。 结构内没有“死循环”(无终止的循环)。 由

39、三种基本结构顺序组成的算法结构可以解决任何复杂问题。n 流程控制流程控制( (续续) )Java流程控制语句:流程控制语句:分支语句:if, switch循环语句:for, while, do_while转移语句:break,continue,return n 流程控制流程控制( (续续) )u分支语句分支语句Java有两种分支语句实现分支结构:if语句实现二路分支switch语句实现多路分支n 流程控制流程控制( (续续) )nif语句语句 if语句的定义形式为:if () 语句块1else 语句块2n 与与C或或C+一样,每个单一语句后面都要有分号。为了一样,每个单一语句后面都要有分号。为

40、了增强程序可读性,应将增强程序可读性,应将if或或else后的语句用后的语句用 括起来。括起来。n else子句是任选的,不能单独作为语句使用,它必须和子句是任选的,不能单独作为语句使用,它必须和if语句配对使用,并且总是与离它最近的语句配对使用,并且总是与离它最近的if配对配对n 流程控制流程控制( (续续) )if的单选结构的单选结构入口点语句 1出口点布尔表达式true falseif-else二路分支结构二路分支结构入口点语句 1语句 2出口点布尔表达式true falsen 流程控制流程控制( (续续) )找出三个整数中的最大值和最小值 public class MaxMin pub

41、lic static void main(String args) int a=1,b=2,c=3,max,min; if(ab) max=a; else max=b; if(cmax) max=c; System.out.println(max=+max); Min=ab?a:b; Min=c=100) if(n=100)(n=999) n 流程控制流程控制( (续续) )if (x=0) if (x0) y=-1; else y=0;else y=1;if (x0) y=-1;else if (x=0) y=0; else y=1;例例: 编写程序,输入一个编写程序,输入一个x值,输出对应

42、的值,输出对应的y值。函数为值。函数为 -1 (x0) n 流程控制流程控制( (续续) )nswitch语句语句switch语句的定义形式为:switch(表达式) case 常量1: 语句1; break; case 常量2:语句2; break; default:;n 流程控制流程控制( (续续) ) 表达式的值只能是表达式的值只能是intint、shortshort、charchar或或bytebyte; 根据表达式取值的不同转向不同的分支;根据表达式取值的不同转向不同的分支; 每个每个casecase分支都只是入口点。分支都只是入口点。 当表达式的值与某一个当表达式的值与某一个cas

43、ecase后面的常量表达式后面的常量表达式的值相等时,就执行该的值相等时,就执行该casecase后面的语句,后面的语句,都不都不相等时相等时,就执行,就执行defaultdefault后语句。后语句。 每个每个casecase的常量表达式的值必须互不相同。的常量表达式的值必须互不相同。switchswitch语句说明语句说明: :6.6.用用breakbreak语句是任选的,作用是跳出语句是任选的,作用是跳出switchswitch结构。如果结构。如果casecase后面没有后面没有breakbreak语语句,将继续执行下一个句,将继续执行下一个casecase,直到遇到直到遇到一个一个br

44、eakbreak语句或到语句或到switchswitch语句的结尾为语句的结尾为止。止。7.7.多个多个casecase可以共用一组执行语句,如可以共用一组执行语句,如: : case case y y : : case case Y Y : : printf(”Yes”); printf(”Yes”); break; break;switch(grade) case a : System.out.println(”An”); case b : System.out.println(”Bn”); default: System.out.println(”Unknownn”); ABUnknow

45、n如果如果grade的值为的值为b,结果结果?如果如果grade的值为的值为a,结果结果?BUnknown如果如果grade的值为的值为c,结果结果?Unknownu循环语句循环语句Java用3种循环语句for、while、do-while实现循环结构。它们的共同特点是根据循环条件来判断是否执行循环体,除此之外,每个语句都有自己的特点。根据不同的问题选择合适的语句,对于有些问题,用3种循环语句都可以实现。n 流程控制流程控制( (续续) )nwhile语句语句循环语句 while(当型循环) A /初始化条件 while (B) /循环条件 C; /循环体 D; /迭代循环条件 BCfalse

46、true当表达式B为true时,执行中的语句,否则终止循环。n 流程控制流程控制( (续续) )用while语句实现求110之和的语句如下:int i=1,n=10,sum=0;while(i=n) sum = sum + i; i+;循环结束后: i=11, sum=55n 流程控制流程控制( (续续) )例如int i=1,n=10, sum=0;while(i=n); int i=1, sum=0;do sum=sum+i; i+;while(i=0); n 流程控制流程控制( (续续) )nfor语句语句for语句的定义格式为:for(表达式1;表达式2;表达式3) 语句块 执行过程:

47、执行过程: 计算表达式计算表达式1的值,对循环变量赋初值的值,对循环变量赋初值 测试表达式测试表达式2的值,若其值为的值,若其值为true,则执行循环体语,则执行循环体语句,然后转步句,然后转步3; 否则转步否则转步5。 计算表达式计算表达式3的值,对循环变量进行修改的值,对循环变量进行修改 转步转步2退出循环退出循环n 流程控制流程控制( (续续) )for循环的结构入口点语句 出口点表达式2true false表达式 1表达式3n 流程控制流程控制( (续续) )n表达式表达式1和表达式和表达式3可以是一个逗号表达式。即可以是一个逗号表达式。即通过逗号运算符连接起来的多个表达式。逗号运通过

48、逗号运算符连接起来的多个表达式。逗号运算符是所有运算符中级别最低的。逗号表达式的算符是所有运算符中级别最低的。逗号表达式的一般形式为:一般形式为: 表达式表达式1,表达式,表达式2,表达式,表达式n逗号表达式的求解过程是:先求解表达式逗号表达式的求解过程是:先求解表达式1,再,再求解表达式求解表达式2。整个逗号表达式的值是最后一个。整个逗号表达式的值是最后一个表达式的值表达式的值。nfor语句中的表达式语句中的表达式1、表达式、表达式2和表达式和表达式3都都可以为空语句,但可以为空语句,但“;”不能缺省。三者均为不能缺省。三者均为空的时候即空的时候即for(;),相当于一个无限循环,相当于一个

49、无限循环说明:n 流程控制流程控制( (续续) )求110的累加和 public class ForDemo public static vold main(String args) int i=1,n=10, sum =0; for(i=1;i=n;i+) sum = sum +i System.out.println(Sum=+ sum ); n 流程控制流程控制( (续续) )int n = 1, sum = 0;while ( n0);int sum =0;for( int i=1; i=10; i+ ) sum += i;while循环循环do-while循环循环for循环循环n循环

50、语句小结循环语句小结n 流程控制流程控制( (续续) )n多重循环多重循环 如果循环语句的循环体内又有循环语句,则构成多重循环结构。 常用的有二重循环及三重循环。 实现手段上既可以循环语句自身嵌套,也可以两个不同的循环语句构成嵌套结构。 n 流程控制流程控制( (续续) )输出九九乘法表 本程序外层for语句的循环变量是i,控制总共打印多少行,内层for语句的循环变量是j,控制每行打印多少字符。 public class forFor public static void main(String args) int i,j,n=9 ; for(i=1; i=n;i+) for(j=1; j 3

51、) break;89 10 n转向语句转向语句( (续续) )1 public class BreakDemo 2public static void main(String args) 3Loop: for(int i = 1; ; i+) 4if(i = 5) 5 i = 1;6 break Loop;78System.out.println(i);91011 n转向语句转向语句( (续续) )break会到达标号会到达标号Loop的位置,但并不重新进入的位置,但并不重新进入for循环,因为他实际上是完全中止了所有循环循环,因为他实际上是完全中止了所有循环结果:输出14之间所有整数ucon

52、tinue语句语句n转向语句转向语句( (续续) )一是在循环结构中用于跳过循环中剩余的语句,强行检测判定条件以决定是否进行下一次循环跳过最内层循环的剩余语句。continue语句的格式如下: continue 标号标号;用途用途:1 public class ContinueDemo 2 public static void main(String args) 3for(int i = 1; i = 10; i+) 4if(i % 2 = 0) continue;5System.out.println(i);67 8 n转向语句转向语句( (续续) )结果:输出110之间所有奇数1 publ

53、ic class ContinueDemo 2 public static void main(String args) 3Loop: for(int i = 1; ; i+) 4if(i = 5) 5 i = 1;6 continue Loop;78System.out.println(i);91011 n转向语句转向语句( (续续) )结果:循环输出14之间所有整数ureturn语句语句return语句用来使程序从方法中返回,并为方法返回一个值。return语句的格式如下:(1) return 返回值;(2) return; n转向语句转向语句( (续续) ) 在一个方法中,允许有多个re

54、turn语句,但每次调用方法时只可能有一个return语句被执行,因此方法的执行结果是唯一的。 return语句返回值的类型和方法声明中声明的类型应保持一致。如果两者不一致,则以方法声明的类型为准,自动进行类型转换,如无法强制转换将出错。 如果方法声明的类型为void,则在方法中可省略return语句。n转向语句转向语句( (续续) )例例: : label1: label1: outer-loop outer-loop inner-loopinner-loop break; break; continue; continue; continue label1; continue label1

55、; break label1; break label1; 1.1. n示例示例例例: 读程序读程序int n=0,sum=0;do +n; sum+=n; while (sum500);1. System.out.println(n=“+n-1+”Sum=”+sum-n); 求满足求满足1 1+2+3+n500中最大的中最大的n并求其和并求其和n示例示例( (续续) )n示例示例( (续续) )求求100200间的所有素数。素数就是只能被间的所有素数。素数就是只能被1和自身整除的数和自身整除的数1 public class PrimeNumber 2 public static void m

56、ain( String args ) 3 int n=0; 4 outerLoop: 5for(int i=100; i200; i= i + 2)/外循环 6 int k = i-1; 7 for(int j=2;j=k;j+)/内循环 判断每个整数i是否为素数 8 if( i%j=0 )/不是素数跳转到外循环 9 continue outerLoop;10 11 System.out.print( +i);/输出素数12 n+; 13 if( n10 )/控制每行显示10个素数14 continue;15 System.out.println();16 n=0;1718System.out

57、.println(); 19 JavaJava的数组的数组 数组是相同类型的数据按顺序组成的一种复合数据类型。通过数组名加数组下标,来使用数组中的数据。下标从0开始排序。 声明数组仅仅是给出了数组名字和元素的数据类型,要想真正的使用数组还必须为它分配内存空间,即创建数组。在为数组分配内存空间时必须指明数组的长度。一维数组一维数组声明格式声明格式: : 类型名类型名 数组名数组名;或:或:类型名类型名 数组名数组名;(;(推荐推荐) )举例:举例: int intArray;int intArray; int intArray; int intArray; (2) 声明、创建并初始化声明、创建并初始化 类型名类型名 数组名数组名=

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论