《项目2.ppt》由会员分享,可在线阅读,更多相关《项目2.ppt(202页珍藏版)》请在三一文库上搜索。
1、项目2 Java语法概述,项目1中,学习了一些Java有关的基本概念,本章将学习Java程序语言设计基础语法,主要介绍Java语言的语法规则,规则一方面是程序员编写程序的约束;另一方面,规则又可以帮助检查出程序错误的地方,并可让程序员充分应用规则,进行程序代码的各种编写尝试。,下一页,2.1 项目概述 2.2 项目目的 2.3 项目支撑知识 2.4 项目实施 2.5 项目总结 2.6 扩展演练,项目2 Java语法概述,2.1 项目概述,在本项目中学习基本符号、变量和常量的概念,Java基本数据类型、运算符、表达式以及几种常用的程序控制语句,还要学习数组的定义和使用。,返回,2.2 项目目的,
2、掌握Java语言中的基本符号、数据类型的定义及使用方法。 掌握Java语言中的运算符和表达式、程序流程控制的使用方法。 掌握Java语言中数据和字符串的使用方法。,返回,2.3 项目支撑知识,2.3.1项目开发背景知识1 Java的基本符号 一、标识符 标识符是程序语句中使用标志符来命名变量、类、创建的对象及对象方法。标识符由一串字符组成,是程序语句的基本组成部分。在Java语言中,标识符的命名规则如下,否则会产生编译错误。,下一页,返回,2.3 项目支撑知识,(1)标识符必须以字母、下划线(_)或美元符号($)开头,后面可以是字母、下划线、美元符号、数字(n9) 。 (2)标识符不能是关键字
3、。关键字是编译程序本身所使用的标识符,如上面例子中的int, double均是关键字。 (3)标识符可有任意长度。标识符不宜过短,过短的标识符会导致程序的可读性差;标识符不宜过长,过长将增加录入工作量和出错的可能性。 (4)标识符区分大小写,如Mybook与mybook是完全不同的两个标识符。,上一页,下一页,返回,2.3 项目支撑知识,例如,i1, i2, count, value add等都是合法的标识符,而关键字不能当做标识符使用,所以2count, high#, null等都是非法的标识符。Java语言区分字母大小写,所以VALUE, Value, value表示不同的标识符。 二、关
4、键字 关键字具有专门的意义和用途,不能当做一般的标识符使用。Java语言中的关键字均用小写字母表示。主要可以分为如下几类。 (1)访问控制:private, protected, public,上一页,下一页,返回,2.3 项目支撑知识,(2)类,方法和变量修饰符:abstract, class, extends, final, implements,interface,native,new,static,strictfp,synchronized,transient,volatile。 程序控制语句:break,continue,return,do,while,if,else,for,ins
5、tanceof,switch,case,default。 错误处理:catch,finally,throw,throws,try。 包相关:import,package。 基本句型:boolean,byte,char,double,float,int,long,short。,上一页,下一页,返回,2.3 项目支撑知识,变量引用:super,this,void。 语法保留字:null,false,true。 注意:关键字goto和const是C+保留的关键字,在Java中不能使用。sizeof, String,大写的NULL也不是关键字。 三、注释 Java允许在源程序文件中添加注释(comme
6、nt),以增加程序的可读性,系统不会对注释的内容进行编译。Java有3种形式的注释。,上一页,下一页,返回,2.3 项目支撑知识,(1)单行注释。 单行注释以“/”开头,至该行行尾。其格式如下: (2)多行注释。 多行注释以“/*”开头,以“*/”结束。其格式如下: (3)文件注释。 文件注释用来产生一个HTML文件,从而为程序提供文档说明。文件注释以“/*”开头,以“*/”结束。其格式如下:,上一页,下一页,返回,2.3 项目支撑知识,四、分隔符 Java使用一些特殊字符作为分隔符(separator)表2-1列出了Java定义的分隔符及功能。 2.3.2项目开发背景知识2 Java数据类型
7、 计算机处理的对象是数据,可以是数值数据,如34.5,也可以是非数值数据,如字符串“ Hello等。,上一页,下一页,返回,2.3 项目支撑知识,通常算法语言将数据按其性质进行分类,每一类称为一种数据类型(datatype)。数据类型定义了数据的性质、取值范围、存储方式以及对数据所能进行的运算和操作。 程序中的每一个数据都属于一种类型,决定了数据的类型也就相应决定了数据的性质以及对数据进行的操作,同时数据也受到类型的保护,确保对数据不进行非法操作。 在Java语言中,数据类型分为简单类型(primitive type)和引用类型(reference type)。简单类型有整型(integral
8、、浮点型(floating)、逻辑型(logical)和字符型(textual)。引用类型包括类(class)、数组(array)和接口(interface)。,上一页,下一页,返回,2.3 项目支撑知识,Java语言的数据类型实际上都是用类实现的,即引用对象的使用方式,同时Java也提供了类似C语言中简单类型的使用方式,即声明类型的变量。 一、 整型 整数有正整数、零、负整数,含义同数学中一样。Java的整数有3种进制的形式表示。 十进制:用多个09之间的数字表示,如123和-100,其首位不能为0。 八进制:以0打头,后跟多个07之间的数字,如0123。,上一页,下一页,返回,2.3 项目
9、支撑知识,十六进制:以Ox或OX打头,后跟多个09之间的数字或af之间的小写字母或AF之间的大写字母,af或AF分别表示值1015,0X123E。 Java定义了4种表示整数的整型:字节型(byte),短整型(short),整型(int),长整型(long)。每种整型的数据都是带符号位的。它们的特性如表2-2所示。 一个整数隐含为整型。当要将一个整数强制表示为长整数时,需在后面加L或1 【例2-1】4种整数类型的常量的最大值。,上一页,下一页,返回,2.3 项目支撑知识,上一页,下一页,返回,2.3 项目支撑知识,【运行结果】如图2-1所示。 【程序分析】 第58句:Java中每种数据类型都封
10、装为一个类,如Long, Integer,Short,Byte,Float,Double,通过类型类的MAX VALUE常量找到各种数值数据类型的取值最大值。对应将MAX VALUE替换为MIN VALUE,可以输出各种整型类型的最小值。 第78句:Java.lang这个类库实在是太常用了,默认的Java程序会将它加载,省略类库Java.lang,程序仍然可以正确运行。,上一页,下一页,返回,2.3 项目支撑知识,二、浮点型 Java用浮点型表示数学中的实数,即整数部分和小数部分。浮点数有两种表示方式。 (1)标准计数法:由整数部分、小数点和小数部分构成,如1.0,123.45等。 (2)科学
11、计数法:由十进制整数、小数点、小数和指数部分构成,指数部分由字母E或P跟上带正负号的整数表示,如123.45可表示为1.2345 E +2。浮点数用于需要小数位精确度的计算。例如,计算平方根或三角函数等,都会产生浮点型的值。Java的浮点格式完全遵循IEEE -754标准。Java的浮点型有单精度浮点(float)和双精度浮点(double)两种。它们的宽度和范围如表2-3所示。,上一页,下一页,返回,2.3 项目支撑知识,一个浮点数默认为double型。在一个浮点数后加字母F或f,将其强制转换为float型。例如:float f =3.0f。 【例2-2】浮点型的常量值。,上一页,下一页,返
12、回,2.3 项目支撑知识,【运行结果】如图2-2所示。 【程序分析】 第58句:Java中每种数据类型都封装为一个类,如Long, Integer,Short,Byte,Float,Double,通过类型类的MAX VALUE常量找到各种浮点数据类型的最大值。也可以省略Java.lang类。 三、布尔型 布尔型(Boolean)用来表示逻辑值,也称为逻辑型。它只有真(true)和假(false)两个值。true和false不能转换成数字表示形式。,上一页,下一页,返回,2.3 项目支撑知识,所有关系运算(如ab)的返回值都是布尔型的值。布尔型也用于控制语句中的条件表达式,如if, while,
13、 for等语句。 四、字符型 字符型(char)用来存储字符。一个字符用一个16位的Unicode码表示。所有可见的ASCII字符都可以用单引号括起来成为字符,如a ,A ,#等。一些控制字符不能直接显示,可以利用转义序列来表示,如表2-4所示。,上一页,下一页,返回,2.3 项目支撑知识,字符串是用双引号括起来的字符序列,如“hello!”转义序列、八进制、十六进制也可以用在字符串中。字符串只能在同一行,不能换行。 【例2-3】输出转义字符。,上一页,下一页,返回,2.3 项目支撑知识,【运行结果】如图2-3所示。 【程序分析】 第5句:将一个转义字符”赋值给一个字符变量。 第6句:+起到连
14、接字符串的作用。 第7句:要区分开转义字符”和”。 2.3.3项目开发背景知识 3常量和变量 一、常量,上一页,下一页,返回,2.3 项目支撑知识,当一个数值在程序中多处重复出现时,可以考虑使用常量来简化该数值的表示,这对程序的日后维护、修改都是极其有益的。因为当这些程序引用到的数值需要进行修改时,程序员不必逐个数值进行修改,只需要把表示该数值的常量变量的值一次性修改完毕就可以了,如以下语句:,上一页,下一页,返回,2.3 项目支撑知识,以上语句定义了常量LEFT ARROW, RIGHT ARROW, BASIC SALARY,可以看到,声明一个Java常量,必须在其前面使用final关键字
15、。这里,常量名均是大写命名的,这是一个编程风格,使得变量与常量很容易被区分。Java类库中的常量也是大写命名的。 常量是一种特殊的变量,也是占用内存空间的,不同于C语言预编译所定义的宏。常变量在声明的同时,就必须被初始化,而且在程序中不能再重新被赋值给常量。,上一页,下一页,返回,2.3 项目支撑知识,二、变量 变量是在程序运行过程中其值可以被改变的量,通常用来记录运算中间结果或保存数据。变量包括变量名、变量值两部分。变量名就是用户自己为变量定义的标识符,而变量值则是存储在变量名中的数据,修改变量的值仅仅是改变存储单元中存储的数据,而不是改变存储数据的位置,即存储数据的位置没有改变。例如:in
16、t=10,改为a=5;等号左边的标识符a是一个int型的变量名,标识整数10的存储位置,改变的只是a的存储的内容,由整数10变为整数5。,上一页,下一页,返回,2.3 项目支撑知识,变量必须先声明后使用。变量声明是要告诉编译器根据数据类型为变量分配合适的存储空间。变量声明包括为变量命名,指定变量的数据类型,如果需要还可以为变量指定初始数值。声明变量的格式如下: 其中Type表示Java的某种数据类型,可以是基本数据类型也可以是类类型。var list则为变量的标志符列表,可以同时写上多个变量,变量之间必须以逗号分隔,也可以在定义时为变量赋初值。如:,上一页,下一页,返回,2.3 项目支撑知识,
17、【例2 -4】源程序名“ComputeArea.Java“,计算半径为10的圆的面积,并显示结果。通过此案例来学习常量和变量的使用。,上一页,下一页,返回,2.3 项目支撑知识,上一页,下一页,返回,2.3 项目支撑知识,【运行结果】如图2-4所示。 【程序分析】 第5句:常量在使用前予以说明和初始化。常量PI不能改变它的值。 第6句:变量的使用,定义变量area是双精度类型。变量area在计算过程中是可以随半径的改变而改变。 第7句:在程序运行时,给变量area赋值。,上一页,下一页,返回,2.3 项目支撑知识,2.3.4项目开发背景知识 4运算符和表达式 一、赋值 1.赋值运算 赋值运算的
18、作用是使变量获得值。赋值的格式如下: = 其中,“=”是赋值运算符,获得计算出的的值。赋值的运算次序是从右向左的,即先计算的值,再将表达式的结果值赋给。,上一页,下一页,返回,2.3 项目支撑知识,例如: 2.赋值运算的语法错误 赋值中的变量名必须已声明,而且表达式必须能计算出确定值,否则将产生编译错误。例如, k=10; 当k声明时,系统将产生“不能解析符号”的编译错误。再有,,上一页,下一页,返回,2.3 项目支撑知识,系统将产生“变量1可能还未被初始化”的编译错误。改成如下的程序才正确: 3.赋值相容 如果参加运算的变量类型和表达式的类型是相同的,就可以赋值,称为类型相同。,上一页,下一
19、页,返回,2.3 项目支撑知识,如果两者类型不相同,并且变量类型比表达式类型长时,系统会自动将表达式转化为较长的类型,如int转化为long,这时也可以赋值,称为赋值相容(assignment compatible)。 例如,,上一页,下一页,返回,2.3 项目支撑知识,如果变量类型比表达式类型短,则赋值不相容,编译时产生“可能存在的精度损失”的错误。 例如: 赋值不相容时,需要使用强制类型转换,其格式如下: () 例如,,上一页,下一页,返回,2.3 项目支撑知识,将long转换为int后,可以赋值。 【例2-5】简单的赋值运算。,上一页,下一页,返回,2.3 项目支撑知识,【运行结果】如图
20、2-5所示 【程序分析】 第5句:定义整型变量age,并赋初值。 第6句:输出整型变量age的初值。 第7句:修改整型变量age的初值。 第8句:输出修改后整型变量age的值。,上一页,下一页,返回,2.3 项目支撑知识,二、运算符 Java提供了十分丰富的运算符,Java的运算符主要分为4类:算术运算符、位运算符、关系运算符和布尔运算符。 1.算术运算符 Java的算术运算符分为一元运算符和二元运算符。一元运算符只有一个操作数,而二元运算符有两个操作数参加运算。 (1)一元运算符:一元正(+),一元负(-),加1(+)和减(-) 加1减1运算符既可放在操作数之前(如+ 1),也可放在操作数之
21、后(如1+),两者的运算方式不同。,上一页,下一页,返回,2.3 项目支撑知识,如果放在操作数之前(如+1),操作数先加1或减1,然后将结果用于表达式的运算;如果放在操作数之后(如i+)则操作数先参加其他的运算,然后再进行加1或减1。 例如:,上一页,下一页,返回,2.3 项目支撑知识,一元运算符与操作数之间不允许有空格。加1或减1运算符不能用于表达式,只能用于简单变量。例如,+(x+1)有语法错误。 【例2-6】一元运算符的使用。,上一页,下一页,返回,2.3 项目支撑知识,上一页,下一页,返回,2.3 项目支撑知识,【运行结果】如图2-6所示 【程序分析】 第6句:先输出变量a的值。 第7
22、句:先引用变量a的值计算表达式a+的值并输出,之后变量a的值加1再输出变量a的值。 第8句:先引用变量a的值计算表达式a-的值并输出,之后变量a的值减1再输出变量a的值。 第9句:先输出变量b的值。 第10句:先引用变量b的值计算表达式+b的值并输出,之后变量b的值加1再输出变量b的值。,上一页,下一页,返回,2.3 项目支撑知识,第11句:先引用变量b的值计算表达式-b的值并输出,之后变量b的值减1再输出变量b的值。 注意:从这一个程序中一定要明自,前缀和后缀的区别。 (2)二元运算符:加(+),减(-),乘(*),除(/)和取余(%)。 其中,+,一,*,/完成加、减、乘、除四则运算,%则
23、是求两个操作数相除的余数。这5种运算符均适用于整型和浮点型。当在不同数据类型的操作数之间进行算术运算时,所得结果的类型与精度最高的那种类型一致。 例如,,上一页,下一页,返回,2.3 项目支撑知识,例如,用w表示今天的星期天,如w=1表示星期一,则明天、昨天分别用下式表示:,上一页,下一页,返回,2.3 项目支撑知识,思考题:怎样用%表示月份的上一个月和下一个月? 2.位运算符 位运算是对整数中的位进行测试、置位或移位处理,是对数据进行按位操作的手段,Java的位操作数只限于整型。Java的位运算符有:非()、与(&)、或(|)、异或(八)、右移()、左移()。运算符的真值表如表2-5所示。,
24、上一页,下一页,返回,2.3 项目支撑知识,例如:,上一页,下一页,返回,2.3 项目支撑知识,3.关系运算符 关系运算符用于比较两个值之间的大小,结果返回布尔值。关系运算符有6种:等于(=)、不等于(!=)、大于()、大于等于(=)、小于()和小于等于(=)。 例如: 4.布尔运算符 布尔运算符只能处理布尔值,所得结果都是布尔值。Java的布尔运算符有:,上一页,下一页,返回,2.3 项目支撑知识,逻辑与(&)、逻辑或(|)、逻辑非(!)、逻辑异或(八)、条件与(&)和条件或( )布尔运算符的真值表如表2-6所示。 例如, 条件与(&)的运算规则与运算符(&)相同,条件或(|)的运算规则与运
25、算符(|)相同。区别在于:&和|具有短路计算功能,而&和|运算符没有短路计算功能 例如:,上一页,下一页,返回,2.3 项目支撑知识,所谓短路计算(short-circuit)功能,即从左向右依次逐个计算条件是否成立,一旦发现有一个条件不成立(如n100),就立即终止计算并且得到复合条件的结果值为false,实际上不用再去计算余下的条件(如n = 999)是否成立。,上一页,下一页,返回,2.3 项目支撑知识,5.其他运算符 (1)赋值运算符与其他运算符的简捷使用方式。 赋值运算符可以与二元、布尔和位运算符组合成简捷使用方式,从而简化一些常用的表达式,如表2 -7所示。,上一页,下一页,返回,
26、2.3 项目支撑知识,(2)运算符!和()。 方括号是数组运算符,方括号中的数值是数组的下标,整个表达式就代表数组中该下标所在位置的元素值。 括号()用于改变表达式中运算符的优先级。 (3)字符串合并运算符。 Java用“+”运算符来合并两个字符串。当“+”合并一个字符串与一个操作数时,Java会自动将操作数转化为字符串。 例如:,上一页,下一页,返回,2.3 项目支撑知识,这种转化对于基本数据类型是自动的,而对于引用类型则需通过调用toString()方法转换。 (4)三元条件运算符(?:)。 Java语言提供厂高效简便的三元条件运算符。该运算符的格式如下: ?: 该运算符的作用是:先计算的
27、值,当的值为true时,则将的值作为整个表达式的值;当的值为false时,则将的值作为整个表达式的值。,上一页,下一页,返回,2.3 项目支撑知识,例如: (5)对象运算符instanceof。 对象运算符instanceof用来测试一个指定对象是指定类(或它的子类)的实例,若是则返回true,否则返回false. (6)强制类型转换符。 Java强制类型转换符能将一个表达式的类型强制转换为某一指定类型,格式如下:,上一页,下一页,返回,2.3 项目支撑知识,() (7)点运算符。 点运算符“.”的作用有两个;一是引用类中成员,二是分隔包(package)的各个域。 【例2-7】 int类型的
28、溢出,上一页,下一页,返回,2.3 项目支撑知识,【运行结果】如图2-7所示,上一页,下一页,返回,2.3 项目支撑知识,【程序分析】 第5句:将整形类型的最大值赋值给变量i。 第6句:输出变量i的值。 第7句:i的值加1变成整数类型表示范围的最小值。 第8句:i的值加2变成整数类型表示范围的次小值,这就是数据类型的“溢i出”。 第9句:为了避免溢出,在表达式i+2的常量部分2之后加上2L,执行结果会自动变成Long整数类型。,上一页,下一页,返回,2.3 项目支撑知识,注意:这里用到了数据类型的自动转换,转换的规则是在数据类型兼容的情况下由表示范围小的向表示范围大的转换。 第10句:为了避免
29、溢出,应用强制类型转换,执行结果会强制变成long整数类型。 【例2-8】整数和浮点数的转换。,上一页,下一页,返回,2.3 项目支撑知识,上一页,下一页,返回,2.3 项目支撑知识,【运行结果】如图2-8所示 【程序分析】 第9句:当2个整数相除时,小数点以后的数字会被截断,即155/9 = 17,当把155/9的结果赋值给f1oat类型的变量g时,会发生数据自动类型换,即g=17.0. 第10句:这里注意转义字符n,表示换行。 第12句:强制数据类型转换。,上一页,下一页,返回,2.3 项目支撑知识,6.运算符的优先级 表2 -8按优先级从高到低的次序列出Java定义的所有运算符,分隔符的
30、优先级最高,表中“左右”表示从左向右的运算顺序。 三、表达式 表达式是算法语言的基本组成部分,它表示一种求值规则,通常由操作数、运算符和圆括号组成。操作数是参加运算的数据,可以是常数、常量、变量或方法引用。表达式中出现的变量名必须已经被初始化。,上一页,下一页,返回,2.3 项目支撑知识,表达式按照运算符的优先级进行计算,求得一个表达式的值。运算符中圆括号的优先级最高,运算次序是“先内层后外层”,因此先计算由圆括号括起来的子表达式,圆括号还可以多级嵌套。大多运算符按照从左向右的次序进行计算,少数运算符的运算次序是从右向左的,如赋值运算符、三元条件运算符等。 Java规定了表达式的运算规则,对操
31、作数类型、运算符性质、运算结果类型及运算次序都做了严格的规定,程序员使用时必须严格遵循系统的规定,不得自定义。 由于操作数和运算符都是有类型的,因而表达式也是有类型的,表达式的类型不一定和操作数相同,它取决于其中的运算结果。,上一页,下一页,返回,2.3 项目支撑知识,例如, Java表达式既可以单独组成语句,也可出现在循环条件、变量说明、方法的参数调用等场合。 【例2 -9】表达式的综合应用。首先求得这个三位数的个、十、百位上的数字,将各位数字相加就是该三位数的数字之和。 程序如下:,上一页,下一页,返回,2.3 项目支撑知识,上一页,下一页,返回,2.3 项目支撑知识,【运行结果】如图2-
32、9所示 【程序分析】 第6句:求出这个三位数的个位; 第7句:求出这个三位数的十位; 第8句:求出这个三位数的百位。 2.3.5项目开发背景知识 5由键盘输入数据,上一页,下一页,返回,2.3 项目支撑知识,在程序语言中,通过用户从键盘输入数据,不仅仅是程序的需求,更可以增加与用户之间的互动。下面的格式即为输入数据时所需要编写的基本架构。,上一页,下一页,返回,2.3 项目支撑知识,由键盘输入的数据,不管是文字还是数字,Java皆视为字符串,因此若是键盘输入的数字,则必须再经过转化,接下来看几个例子。 【例2-10】由键盘输入字符串,上一页,下一页,返回,2.3 项目支撑知识,【运行结果】如图
33、2-10所示。 【程序分析】 第1句:import是加载Java.Io.*类库里的所有的类,供以后的代码程序使用。 第4句:throws IOException属于Java异常的内容,将在项目4学习。,上一页,下一页,返回,2.3 项目支撑知识,第12句:会等待用户输入数据,输入完毕后按下【Enter】键,所输入的文字都会被设给字符串变量str,根据用户输入的不同,输出的内容也不同。 【例2-11】由键盘输入整数。,上一页,下一页,返回,2.3 项目支撑知识,上一页,下一页,返回,2.3 项目支撑知识,【运行结果】如图2-11所示 【程序分析】 第12句:由于从键盘输入的数据,Java皆视为字
34、符串,因此想要取得数值,必须做一个转换的操作,这条语句就是将输入的字符串转换成int类型的数值。若是想输入其他类型的数值,可以利用表2 -9中的转换的方法。 2.3.6项目开发背景知识6程序流程控制,上一页,下一页,返回,2.3 项目支撑知识,按程序的执行流程,程序的控制结构可分为3种:顺序结构、分支结构和循环结构。这3种结构的流程图如图2-12所示。 一、顺序结构 一般情况下,程序按语句的书写次序依次顺序执行(sequential execution ,如图2-12(a)所示。先执行,再执行。顺序结构是最简单的一种基本结构。 二、分支结构 程序中有些语句的执行是有条件的。当某种条件成立时,执
35、行一段程序;条件不成立时,执行另一段程序,或不执行,这种情况称为“二路分支结构”,如图2-12(b)所示。,上一页,下一页,返回,2.3 项目支撑知识,在此结构中有一个菱形的判断框,它有两个分支,根据条件是否成立(true/false)而分别执行或。除此之外还有多路分支结构。 1.简单的if条件语句 简单if条件语句只在条件为真时执行,如图2-13 , if语句流程图所示。其语法如下。,上一页,下一页,返回,2.3 项目支撑知识,若布尔表达式的值为真,则执行块内语句。 【例2-12】简单的if条件语句。,上一页,下一页,返回,2.3 项目支撑知识,【运行结果】如图2-14所示 【程序分析】 第
36、6, 8句:在if子句末不能加分号(;),在if语句中,布尔表达式总应该用括号括住。 第10句:如果块中只有一条语句,花括号可以省略。但建议使用花括号以避免编程错误。 2.简单if-else条件语句 当指定条件为真时简单if语句执行一个操作,当条件为假时什么也不做。那么,如果需要在条件为假时选择一个操作,则可以使用if-else语句来指定不同的操作,如图2-15 if-else语句流程图所示。下面是这种语句的语法。,上一页,下一页,返回,2.3 项目支撑知识,If(布尔表达式) 布尔表达式为真时执行的语句1(块) else 布尔表达式为假时执行的语句2(块) ,上一页,下一页,返回,2.3 项
37、目支撑知识,若布尔表达式计算为真,执行语句2(块)(true时执行),否则,执行语句1(块)(false时执行)。 【例2-13】简单if-else条件语句。,上一页,下一页,返回,2.3 项目支撑知识,【运行结果】如图2-16所示。 【程序分析】 第6句:在if语句中,布尔表达式总应该用括号括住; 第7 9句:语句1(块),如果块中只有一条语句,花括号可以省略。但建议使用花括号以避免编程错误; 第1113句:语句2(块)。 3. if语句的嵌套 if或if -else语句中的语句可以是任意合法的Java语句,包括其他if或if -else语句。内层的if语句称为嵌套在外层if语句中。内层if
38、语句又可以包含另一个if语句,事实上,嵌套的深度没有限制。,上一页,下一页,返回,2.3 项目支撑知识,上一页,下一页,返回,2.3 项目支撑知识,这个if语句的执行过程如下:测试第一个条件(Score 60),若真,显示”不及格”;若假,测试第二个条件(Score 80),若第二个条件为真,显示”及格”;若假,继续测试第三个条件(Score 90),若第三个条件为真,显示”良好”,否则显示”优秀”。注意,只有在前面的所有条件都为假时才进行测试下一个条件。 前面的if语句与下述语句等价:,上一页,下一页,返回,2.3 项目支撑知识,事实上,这是多重选择if语句比较好的书写风格。这个风格可以避免
39、深层缩并使程序容易阅读。 注意:else子句与同一块中离得最近的if子句相匹配。 【例2-14】 if语句的嵌套,上一页,下一页,返回,2.3 项目支撑知识,【运行结果】如图2-17所示。,上一页,下一页,返回,2.3 项目支撑知识,【程序分析】 第713句:if与else的嵌套问题 4. switch语句 在编程的过程中还经常会碰到需要测试指定的变量是否等于某一个值的现象,如果不匹配,则对其他的值进行再匹配,这一点很像if-else-if-else的形式。但是当值很多的时候,用这种形式将变得非常麻烦,而且使程序变得很难懂。例如分别判断5分制成绩的时候,用if-else-if-else的形式会
40、是以下的情况。,上一页,下一页,返回,2.3 项目支撑知识,代码不简练,如果有块语句的时候或者是条件不是5个而是10个甚至更多个的时候,代码会更加的不清晰。,上一页,下一页,返回,2.3 项目支撑知识,为了避免if-else语句嵌套引起阅读和运行上的错误,可以使用switch语句,switch语句根据表达式的结果来执行多个可能操作中的一个。 语法形式如下:,上一页,下一页,返回,2.3 项目支撑知识,Switch语句中的每个“case常量”:成为一个case语句,代表一个case分置的入口。Switch语句的流程图如图2-18所示。 Switch语句遵从下述规则: (1)switch语句先计算
41、括号中表达式的值。 (2)常量1常量N必须与switch表达式的值具有相同的数据类型。当表达式的值与case语句的值相匹配时,执行该case分支语句。直到碰到break或跳出switch语句。 (3)关键字break是可选的。break语句终止整个switch语句。若break语句不存在,下一个case语句将被执行。,上一页,下一页,返回,2.3 项目支撑知识,(4)默认情况(default)是可选的,它用来执行指定情况都不为真时的操作。默认情况总是出现在switch语句块的最后。 【例2-15】switch语句的使用。,上一页,下一页,返回,2.3 项目支撑知识,上一页,下一页,返回,2.3
42、 项目支撑知识,【运行结果】如图2-19所示 【程序分析】 第910句:当成绩为90100的时候,成绩的等级均为优秀,也是说case 10和case 9这2个分支具有相同的动作,因此可以只在最后一个分支上写上执行语句。 第1823句:道理同第910句的分析。 第14句:因为a的值为7,执行case 7之后的分支语句,输出结果为良好,之后,碰到break语句,结束switch语句的执行。 第15句:如果之后缺少第15句的break语句,结果会怎样?自己修改程序并运行,领会break语句的作用。,上一页,下一页,返回,2.3 项目支撑知识,三、循环结构 有些程序段在某种条件下需要重复执行多次,从而
43、形成循环结构,如图2-12(c)所示。当条件满足(即为true)时,反复执行,一旦条件不满足(即为false)时就不再执行,循环结束,执行下一个基本结构。它的特点是“先判断,后执行”。如果在开始时条件就不满足,循环就不执行。 Java的3种循环语句有while , do-while和for循环语句。,上一页,下一页,返回,2.3 项目支撑知识,1.while循环 它的执行过程如图2-20所示,其语法如下。 While(条件) 循环体 说明:循环条件是一个布尔表达式,它必须放在括号中。在循环体执行前一定先计算循环条件,若条件为真,执行循环体,若条件为假,整个循环中断并且程序控制转移到while循
44、环后的语句。,上一页,下一页,返回,2.3 项目支撑知识,【例2-16】While循环的使用,上一页,下一页,返回,2.3 项目支撑知识,【运行结果】如图2-21所示 【程序分析】 第6行:进人while循环的判断条件i -10,第一次进入循环时,由于i的值为1,所以判断条件为真,进入循环主体。 第710行:为循环主体,sum+i的值再指定给sum存放,i的值加1,再回到循环起始处,继续判断1的值是否仍在限定的范围内,直到1大于10即会跳出循环,表示累加的操作已经完成,最后将结果sum的值输出即可。,上一页,下一页,返回,2.3 项目支撑知识,2.do-while循环语句 do循环其实就是wh
45、ile循环的变体。它的执行过程如图2 - 22所示,其的语法如下。 Do 循环体 while(条件); 注意:在do循环中while条件判断之后需要添加一个分号。,上一页,下一页,返回,2.3 项目支撑知识,do-while的循环流程是和while循环不一样的,二者的主要差别在于循环条件和循环体的执行顺序不同。另外,当循环初始条件满足时,二者没有区别,功能结果一样,但是当循环初始条件不满足时,while循环的循环主体一次也不执行,但do-while循环的循环主体至少要执行一次。 【例2-17】do-while循环语句的使用。,上一页,下一页,返回,2.3 项目支撑知识,上一页,下一页,返回,2
46、.3 项目支撑知识,【运行结果】如图2-23所示。 【程序分析】 第1014行:利用,do-while循环判断所输入的值n小于0时,会重复输入直到n大于0。 第1517行:再次利用do-while循环计算累加1到n的结果。do-while循环语句的判断条件是循环控制变量i小于等于n时,就执行循环主体-程序的第16行。 3.for循环语句,上一页,下一页,返回,2.3 项目支撑知识,for循环的执行过程如图2-24所示,一般地,它的语法如下。 for(循环变量初始化;循环条件;调整语句) 循环体 for循环语句以关键字for开始,然后是由括号括住的三个控制元素,循环体括在大括号内。控制元素由分号
47、分开,控制循环体的执行次数和终止条件。下面的for循环可以打印“Welcome!”100次。,上一页,下一页,返回,2.3 项目支撑知识,第一个元素为i=0,初始化循环变量。循环变量跟踪循环体的执行次数,调整语句修改它的值。 第二个元素为1100,是布尔表达式,用作循环条件。 第三个元素是调整控制变量的语句,循环变量的值最终必须使循环条件变为假。 另外,循环变量也可以在for循环中进行说明和初始化。上例还可写成下列语句:,上一页,下一页,返回,2.3 项目支撑知识,【例2-18】源程序TestSum.Java,使用for循环计算从1到100的数列的和。,上一页,下一页,返回,2.3 项目支撑知
48、识,【运行结果】如图2-25所示。,上一页,下一页,返回,2.3 项目支撑知识,【程序分析】 第710句组成的for循环,变量i从1开始,每次增加1,当i大于100时循环终止。 四、转向语句 break和continue语句用于分支语句和循环语句中,使得程序员更方便地控制程序执行的流程。 1.break语句 break有两种形式,一种是不带语句标号的break,用于立刻终止包含它的最内层循环。如在switch语中,break语句用来终止switch语句的执行。,上一页,下一页,返回,2.3 项目支撑知识,另一种是带标号的break,用于多重循环中,跳出它所指定的块(在Java中,每个代码块可以
49、加一个括号和语句标号),并从紧跟该块的第一条语句处执行。 例如:下面break语句中断内层循环并把控制立即转移到外层循环后的语句。,上一页,下一页,返回,2.3 项目支撑知识,如果把上述语句中的break outer换成break,则break语句终止内层循环,仍然留在外层循环中。如果想退出外循环,就要使用带标号的。 【例2-19】源程序TestBreak.Java,测试break语句对程序结果的影响。,上一页,下一页,返回,2.3 项目支撑知识,【运行结果】如图2-26所示。,上一页,下一页,返回,2.3 项目支撑知识,【程序分析】 第813句的while循环中,如果不用12行的if语句,本程序计算从1到5的和。如果有了if语句,总和大于等于6时循环终止。 2. continue语句 continue语句用来结束本次循环,跳过循环体中下面尚未执行的语句,接着进行终止条件的判断,以决定是否继续循环。 【例2-20】源程序“TestContinue.Java“,测试continue语句),上一页,下一页,返回,2.3 项目支撑知识,上一页,下一页,返回,2.3 项目支撑知识,【运行结果】如图2
链接地址:https://www.31doc.com/p-3377184.html