《《基本语法 》PPT课件.ppt》由会员分享,可在线阅读,更多相关《《基本语法 》PPT课件.ppt(118页珍藏版)》请在三一办公上搜索。
1、第3章 Java基本语法,学习目标 本章要点上机练习 习 题,学习目标,要编写结构简单、可读性强的Java程序,需要对Java的基本语法结构非常熟悉。本章主要对Java语言的基本语法元素做详细的介绍,分别讲解了标识符、运算符、表达式和控制结构的知识,详细介绍了数据类型及其转换,最后介绍了分支和循环等条件控制语句,对Java语言的基本语法做了深入的讲述,通过本章的学习可以全面掌握Java语法,可以熟练应用Java这些基本语法进行编程。,本章要点,Java语言的基本组成元素标识符与关键字Java的基本数据类型条件控制语句的使用,Java语言的基本组成元素,Java语言的基本元素包括了标识符(Ide
2、ntifier)、关键字(Keyword)、文字(Literal)和运算符。Java程序在编译时常常被拆分成这些小的单元。关键字与标识符 运算符与表达式,关键字与标识符,在学习Java语言之前,了解标识符和关键字是很有必要的,下面将详细地介绍。关键字标识符,关键字,关键字是被系统定义好了的,具有特定意义的一些单词,可标识数据类型名或程序构造(construct)名,用户所定义的标识符不能是关键字。,关键字,Java中的关键字如下所示。abstract boolean break byte case catch char class continue default do double else
3、 extends false final finally float for if implements import instantceof int interface,关键字,long native new null package private protected public return short static super switch synchronized this throw throws transient true try void volatile while const goto,关键字,关键字的使用说明如下。关键字都是小写字母。const和goto是Java的保
4、留字,已不再是关键字。Then、sizeof不是Java关键字。,关键字,True、False和null为小写,而不是象在C+语言中那样为大写。String是Java语言一个封装类的类名,也不是关键字。通常情况下,不采用包含“$”的关键字。,标识符,标识符是用来对Java语言中的各个元素进行命名的记号,例如:变量名、方法名、类名、数组名等等。Java语言中,标识符是以字母、下划线和美元符开始的一个字符序列,后面可以跟字母、下划线、美元符和数字,如下分别为合法和非发的标识符。,标识符,合法的标识符:mail,user_name,$money,_System_ID。非法的标识符:7color,ch
5、ang#,public,int。,标识符,【例3-1】判断下列标识符哪些是合法的标识符,并说明原因。Sky,$computer,NULL,for,id-list,7mail,学校,_animal_tiger,catch_5,标识符,分析:合法的标识符为:Sky,$computer,NULL,_animal_tiger,catch_5非法的标识符为:for(关键字),id-list(非法符号“-”),学校(不能使用汉字),7mail(首字母不能是数字)。,运算符与表达式,Java的运算符指对操作数(以下使用op表示)所做的运算操作。Java的运算符包括:算术运算符、关系运算符、逻辑运算符、位运算
6、符、赋值运算符、条件运算符以及一些其他的运算符。按照操作数的数目又可以分为单目运算符(一个操作数)、双目运算符(两个操作数)和三目运算符(3个操作数)。,运算符与表达式,算术运算符 关系运算符 逻辑运算符 赋值运算符 位运算符 条件运算符,算术运算,算术运算符的操作数必须是数字类型。算术运算符不能用在布尔类型的操作数上,但是可以用在char类型的操作数上,因为在Java中,char类型实质是int类型的一个子集。,算术运算符,算术运算符,算术运算符包括了四则运算、求模和自增自减符号。,算术运算符的使用,算术运算符,算术运算符的使用说明如下。运算按从左到右顺序进行,且乘、除、求模运算符的优先级别
7、高于加、减运算符。加减运算符的优先级是4级,乘、除、求模运算符的优先级是3级,等号优先级最低。,算术运算符,求模运算的结果就是两个操作数相除得到的余数。“()”也属于运算符的一种,且优先级别最高。,算术运算符,如果两个操作数都为整型,那么结果也为整型;如果一个操作数为整型,另一个为浮点型(小数),则结果为浮点型;这种过程称为数据类型的转化,将在下节详细介绍。,算术运算符,“+”号是进行字符串的连接。【例3-2】写出下列表达式返回值,注意各运算符的优先级。5+13-3,1+5*2,1 4/2+3*4%5,(2+3)*2-6*7%2,算术运算符,分析:5+13-3 1+5*2 1 4/2+3*4%
8、5(2+3)*2-6*7%2=18-3=1+10=1-2+12%5=5*2-42%2=15=11=12+2=10-0=1=1=10,算术运算符,Java提供特殊的赋值运算符,该运算符可将运算符与赋值结合起来。这种简写形式对于Java的二元(即需要两个操作数的)运算符都适用。其语句格式为:var=var op expression;可以被重写为:var op=expression;,算术运算符,这种赋值运算符有两个好处:第一,比标准的等式要紧凑;第二,有助于提高Java的运行效率。由于这些原因,在Java的程序中经常会看见这些简写的赋值运算符。,关系运算符,关系运算符用来比较两个值的关系,并返回
9、一个布尔型的值(True或False)。当关系运算符对应的表达式成立时,返回True值,否则返回False值。关系运算符都是双目运算符。,关系运算符,关系运算符的使用,关系运算符,关系运算符的使用说明如下:“=”符号是判断两个操作数是否相等,而“=”是赋值运算符。关系运算符的执行方向是从左往右。,=的优先级是6,=,!=的优先级是7。,关系运算符,【例3-3】写出下列表达式的返回值。10 30-25 3!=(2+3)/5分析:10 30-25 3!=(2+3)/5105 3!=1返回值False 返回值True,关系运算符,【例3-4】本例说明关系运算符的使用。注意体会各基本关系运算符的使用方
10、法。该例使用NetBeans编写程序(光盘:源文件第3章例3-4.txt)。,NetBeans结果输出界面,逻辑运算符,逻辑运算符用于执行逻辑判断,其返回值仍然为布尔型变量(True或False)。逻辑运算符的操作数必须为布尔型变量。,逻辑运算符,逻辑运算符的使用,逻辑运算符,逻辑运算符的使用说明如下。&的优先级是11,|的优先级是12,!的优先级是2。对于“&”运算,当op1的值为False,则不必再计算op2的值,直接得出该表达式的值为False,该运算又称为逻辑短路与运算。,逻辑运算符,对于“|”运算,当op1的值为True时,则不必再计算op2的值,直接得出该表达式的值为True,该运
11、算又称为逻辑短路或运算。【例3-5】写出下列表达式的返回值35&22&36,逻辑运算符,分析:35&22&36False&26 False False|True True&False True False,逻辑运算符,【例3-6】设a的值为1,经过下列运算后,求表达式的返回值是多少,a的值是多少?((b=2)=3)&(a=2)=2)((b=2)=2)&(a=2)=2),逻辑运算符,分析:1)((b=2)=3)&(a=2)=2)False&(a=2)=2)False因为“&”运算左边表达式的值为False,不用继续计算,可以得到整个表达式的值为False。此时a的值仍为1。,逻辑运算符,2)((
12、b=2)=2)&(a=2)=2)True&True True 因为“&”运算左边表达式的值为真,需要继续执行右边表达式,最后得到整个表达式值为True。此时a的值为2。,赋值运算符,赋值运算符是“=”符号,是从右向左的双目运算,作用是将“=”符号右边的操作数的值赋给左边的操作数。可见,该运算符左边操作数必须是变量,而不能是常量或者表达式。赋值运算符的优先级是14级,为优先级别最低的运算符。,位运算符,位运算符用来对二进制位进行操作。,位运算符,位运算符的使用,位运算符,因为数据在电脑内存中是以二进制的形式存放,因此在使用位运算的时候一定要知道各个进制间的转化方法。在二进制的形式下,再对操作数进
13、行按位的运算。下面将介绍各位运算符的作用。,位运算符,1)“&”运算参与运算的两个值,如果两个相应位都为1,则该位的结果为1,否则为0。即:0&0=0,0&1=0,1&0=0,1&1=1,位运算符,2)“|”运算参与运算的两个值,只要两个相应位中有一个为1,则该位的结果为1。即:0|0=0,0|1=0,1|0=0,1|1=1,位运算符,3)“”运算参与运算的两个值,只要两个相应位相同,则结果为0,否则为1。即:00=0,0 1=1,1 0=1,1|1=1,位运算符,4)“,”移位运算Java编程语言提供了两种右移位运算符,即和,其中运算符进行算术或符号右移位,移位的结果是第一个操作数被2的幂来
14、除,而指数的值是由第二个数给出的。,位运算符,逻辑或非符号右移位运算符主要作用于位图,而不是一个值的算术意义,它总是将零置于最重要的位上。在移位的过程中,运算符使符号位被复制。,位运算符,运算符执行一个左移位,移位的结果是第一个操作数乘以2的幂,指数的值是由第二个数给出的。,条件运算符,条件运算符是“?:”符号,为三目运算,它的一般格式为:expression?statement1:statement2,条件运算符,其中表达式expression的值为一个布尔值,如果该值为True,则执行statement1,否则执行statement2,而且语句statement1和statement2需要
15、返回相同的数据类型,且该类型不是void。,条件运算符,如果要通过测试某个表达式的值来选择两个表达式中的一个进行计算时,用条件运算符来实现是一个简单的方法,相当于实现了if-else语句的功能。,Java基本数据类型,Java的数据类型分为两类:简单数据类型和复杂数据类型。简单数据类型分为4种,包括布尔型、字符型、整型和浮点型等。复杂数据类型包括数组、类和接口等。,Java基本数据类型,简单数据类型 复杂数据类型 数据类型的转换 应用举例通过可视化界面操作的数据类型转化,简单数据类型,简单数据类型分为4种,其数据类型主要有8个。,简单数据类型的种类,基本数据类型取值范围,简单数据类型,布尔型B
16、oolean 字符型char 整型byte,short,int,long 浮点型,布尔型Boolean,布尔型变量通常用来表示逻辑值的两种状态,如经常使用的“on”和“off”、“True”和“False”、“yes”和“no”等。boolean有两个值,即True和False。布尔型变量的定义:boolean truth=True;,布尔型Boolean,【例3-7】布尔型变量的使用。该例展示了4种布尔变量(“&”,“|”,“”,“!”)的使用(光盘:源文件第3章例3-7.txt)。,类“Test3_7”结果输出界面,字符型char,使用char类型可表示单个字符。一个char代表一个16-
17、bit无符号(不分正负)Unicode字符。一个char文字必须包含在单引号内(),如A,?,漂亮,等。要注意的是,必须使用英文半角状态下的单引号,而不是中文全角状态。,字符型char,字符型变量的定义:char a,char x,y,z;char z=网球【例3-8】字符型变量的使用(光盘:源文件第3章例3-8.txt)。,类“Test3_8”结果输出界面,整型byte,short,int,long,在Java编程语言中有4种整数类型,每种类型都对应由关键字byte,short,int和long中的一种进行声明。整数类型数据可使用十进制、八进制和十六进制的符号表示,下面将分别进行介绍。,整型
18、byte,short,int,long,2 表示一个十进制的数值2077 首位的0表示一个八进制的数值770 xBAAC 首位的0 x表示一个十六进制的数值BAAC整数类型的文字属int类型,在其后直接跟着一个字母“L”,L表示一个long值。,整型byte,short,int,long,上述文字的long的形式如下。2L 十进制值是2,是一个long077L 首位的0表示一个八进制的数值77,是一个long0 xBAACL 前缀0 x表示一个十六进制的数值BAAC,是一个long,整型byte,short,int,long,【例3-9】整型变量的使用(光盘:源文件第3章例3-9.txt)。,
19、浮点型,浮点型变量包括了两类:float和double,缺省为double。浮点文字包括小数点或下列各项之一。E或e(增加指数值);F或f(float);D或d(double)。【例3-10】浮点型变量的使用(光盘:源文件第3章例3-10.txt)。,类“Test3_10”结果输出界面,复杂数据类型,复杂的数据类型包括了类、数组和接口。其中,比较特殊的是数组,它是一个对象而不是一个类,但是通常把它当成类来使用,一般归到复合数据类型中。这些数据类型的具体概念和使用将在随后的章节中介绍。,数据类型的转换,在计算过程中常常遇到整型、浮点型、字符型等等各种类型数据的混合运算。因此,我们在计算之前首先要
20、将它们都转化成同一个类型的数据后再进行运算。这种过程称为数据类型的转换。数据类型转换的原则是位数少的类型转换成位数多的类型时进行自动类型转换,反之则需要进行手动的类型转换。,自动数据类型转换的规则,数据类型的转换,显式类型转换的格式为:低精度类型 变量名=(低精度类型)高精度类型变量名【例3-11】数据类型的转换。本例包含数据类型的显式转换和隐式转化(光盘:源文件第3章例3-11.txt)。,类“TypeChange”结果输出界面,应用举例通过可视化界面操作的数据类型转化,本节的应用举例将进行数据类型的转换。本例包含数据类型的显式转换和隐式转化(光盘:源文件第3章应用举例.txt)。,类“Ty
21、peChange”运行结果,控 制 语 句,Java语言与C/C+类似,都是通过流控制来执行程序流,完成一定任务。程序流是由若干个语句组成。语句可以是单一语句,也可以是用大括号“”括起来的复合语句。Java的控制语句包括:分支语句、循环语句、跳转语句和异常处理语句,下面将分别对前3种语句做具体介绍。,控 制 语 句,分支语句 循环语句 跳转语句,分支语句,分支语句使部分程序可根据某些表达式的值被有选择地执行。Java编程语言支持双路if和多路switch分支语句。if else语句switch语句,if else语句,if else语句又称条件语句,其格式为:if(布尔表达式)语句或块;if(
22、条件为真),if else语句,语句或块;else语句或块;【例3-12】if else语句的使用(光盘:源文件第3章例3-12.txt)。,类“Test3_12”结果输出界面,switch语句,switch语句是多分支的开关语句,它的格式为。switch(expr1)case expr2:statements;break;case expr3:,switch语句,statements;break;default:statements;break;,switch语句,在switch(expr1)语句中,expr1必须与int类型是赋值兼容的;byte、short或char类型可被升级,不允许使
23、用浮点或long表达式。,switch语句,当变量或表达式的值不能与任何case值相匹配时,可选缺省符(default)指出应该执行的程序代码。如果没有break语句作为某一个case代码段的结束句,则程序的执行将继续到下一个case,而不检查case表达式的值。,switch语句,【例3-13】switch语句的使用。该例通过switch语句实现由读者输入的值来确定输出值的功能(光盘:源文件第3章例3-13.txt)。,类“Switch_Test”结果输出界面,循环语句,循环语句使语句或语句块的执行得以重复进行,直到满足终止循环的条件为止。Java编程语言支持三种循环构造类型:for、whi
24、le和do-while循环。for和while循环是在执行循环体之前测试循环条件,而do-while是在执行完循环体之后测试循环条件。,循环语句,这就意味着for和while循环可能一次循环体都未执行,而do-while将至少可以执行一次循环体。一个循环的基本组成部分如下。初始化部分(initialization):设置循环的初始化条件。循环体部分(body):用于循环执行的代码,包括了语句或者复合语句。,循环语句,迭代部分(iteration):在当前循环结束,下一个循环开始前执行的语句,常常用来使计数器进行+1或-1操作。终止部分(termination):通常是一个布尔表达式,每一次循环
25、都要对该表达式求值,以验证是否满足循环终止条件。,循环语句,for循环 while循环 do-while语句,for循环,for循环的格式是:for(initialization;termination;iteration)body;,for循环,Java语言允许在for()循环结构中使用逗号作为分隔符。如for(i=0,j=0;j10;i+,j+)是合法的;它将 i和j值初始化为零,并在每执行完一次循环体后,增加一次它们的值。,for循环,初始化、终止和迭代部分都可以为空语句,但是分号不能省略,当三者均为空的时候相当于一个无限循环。【例3-14】用for循环语句实现累计求和(光盘:源文件第3
26、章例3-14.txt)。,类“Test3_15”结果输出界面,while循环,while循环的格式是:initializationwhile(termination)body;iteration;,while循环,【例3-15】用while语句实现累计求和(光盘:源文件第3章例3-15.txt)。,do-while语句,do-while循环的格式是:initializationdobody;iteration;while(termination);,do-while语句,如同while循环一样,请确认循环控制变量在循环体中被正确初始化和测试并被实时更新。for循环一般用在那种循环次数事先可确定
27、的情况,而while和do-while循环用在那种循环次数事先不可确定的情况。,do-while语句,【例3-16】do-while循环语句实现累计求和,(光盘:源文件第3章例3-17.txt)。,跳转语句,Java语言中的跳转语句是:break 和 continue语句。break语句 continue语句,break语句,在switch语句中,break语句可以用来终止switch语句的执行,使程序从switch语句后的第一个语句开始执行。,break语句,在break语句中也可以指明它要跳出的代码块,并从紧跟该块的第一条语句处执行,其格式为:break BlockLabel;这里的Blo
28、ckLabel表示代码块,通过为每个代码块加一个大括号“”来表示。,continue语句,continue语句一般用来结束一个循环,当程序执行到continue语句时,会跳过循环体中continue语句以后的代码,接着进行终止条件的判断,以决定是否继续循环。在for语句中,在进行终止条件的判断前,还要先执行迭代语句。,continue语句,执行格式为:continue;或跳出到外层循环。continue outerLabel;【例3-17】跳转语句的使用。本例通过Break语句来中断for循环语句(光盘:源文件第3章例3-17.txt)。,类“BreakDemo”结果输出界面,continue
29、语句,当数值被找到时,break语句终止了for循环,控制流程就转到for语句的下面的语句继续执行。【例3-18】求100-200之间的素数(光盘:源文件第3章例3-18.txt)。,类“GetPrimenumber”结果输出界面,上 机 练 习,本节将通过查看循环类型和使用各个语句编程两个上机练习,帮助读者巩固本章所学的知识点。查看循环类型 使用各种语句编程,查看循环类型,通过键盘输入不同数字,选择需要查看的循环类型,程序把该类型的循环的示例输出显示到屏幕上(光盘:源文件第3章上机练习1.txt)。,类“Menu”结果输出界面,使用各种语句编程,本次练习熟练使用if-else语句和switch条件分支语句编程,熟练使用while语句、do-while语句和for语句等循环语句编程。,使用各种语句编程,定义类“compare”比较两个数得大小,定义类“BT37”求出在11000内可被3与7整除的数(光盘:源文件第3章上机练习2.txt)。,类“BT37”结果输出界面,习 题,(1)编写程序,统计个位数是6,并且能被3整除的5位数共有多少个。(2)编写一个小程序,把100元人民币换成50元,20元,10元的纸币,计算出有多少种换法。(3)编写一个Java程序,求1+2!+3!+4!+5!+20!。,