《第3章 运算符、表达式和语句(精品).ppt》由会员分享,可在线阅读,更多相关《第3章 运算符、表达式和语句(精品).ppt(52页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、第三章 JAVA语言基础运算符、表达式和语句运算符、表达式和语句宝鸡文理学院计算机科学系【学习目标学习目标】n n本讲主要讲述java编程语言的基本语法知识,如java 中的运算符和表达式,及控制语句。通过本讲的学习,同学们可以编写简单的java程序。重点:重点:1 深刻理解各知识点的概念,并熟记java 的语法规范。2 能熟练使用各种控制语句。第章运算符、表达式和语句第章运算符、表达式和语句n3.1 运算符与表达式运算符与表达式n3.2 语句概述语句概述n3.3 控制语句控制语句n3.4 循环语句循环语句n3.5 break和和continue语句语句n3.6 应用举例应用举例3.1 运算符
2、与表达式运算符与表达式 Java 提供了丰富的运算符,基本的运算符按功能划分,有下面几类:n1 算术运算符:+,*,/,%,+,-n2 关系运算符:,=,&,|,。1 算术运算符与表达式算术运算符与表达式 n用算术符号和括号连接起来的符合java语法规则的式子,称为算术表达式,如x+2*y-30+3*(y+5)。n加减运算符:+,-,加减运算符的结合方向是从左到右。n乘,除和求余运算符:*,/,%,运算符的结合方向是从左到右.乘除运算符的操作元是整型或浮点型数据。“+”字符串+字符串=字符串 字符串+其它类型=字符串 “abc是”+123=“abc是123”;“abc”+1+2=?“abc”+
3、(1+2)=?1+2+“abc”=?自增,自减运算符:+,-n自增、自减运算符是单目运算符,可以放在操作元之前,也可以放在操作元之后。操作元必须是一个整型或浮点型变量。作用是使变量的值增1或减1n+x(-x)表示在使用x之前,先使x的值加(减)1。a=2;b=+a;/b=?nx+(x-)表示在使用x之后,使x的值加(减)1。a=2;b=a+;/b=?算术混合运算的精度 精度从“底”到“高”排列的顺序是:byte short int long float doubleJava将按运算符两边的操作元的最高精度保留结果的精度,例如:5/2的结果是2,要想得到2.5,必须写成5.0/2或5.0f/2。
4、char型数据和型数据和整型整型数据运算结果的精度是数据运算结果的精度是int。例如:byte x=7;那么B+x;的结果?型,下列写法是不正确的?,char ch=B+x;应当写成:char ch=(char)(B+x);运算中数据类型自动提升转换规则运算中数据类型自动提升转换规则整型整型,实型实型,字符型数据可以混合运算。运算中,不同字符型数据可以混合运算。运算中,不同类型的数据先转化为同一类型,然后进行运算,转换从类型的数据先转化为同一类型,然后进行运算,转换从低级到高级;低级到高级;操作数操作数1类型型 操作数操作数2类型型 转换后的后的类型型 byte、short、char byte
5、、short、charint byte、short、char intintbyte、short、char、int long long byte、short、char、int、long float float byte、short、char、int、long、float double double 例例:byte b=5;:byte b=5;b=(b-2);/?b=(b-2);/?2关系运算符与关系表达式n关系运算符:,=,8,(x+y)80。3逻辑运算符与逻辑表达式 n逻辑运算符包括:&,|,!。其中&、|为双目运算符,实现逻辑与、逻辑或;!为单目运算符,实现逻辑非。逻辑运算符的操作元必须是b
6、oolean型数据,逻辑运算符可以用来连接关系表达式。例如,28&92的结果为false,28|92的结果为true。4赋值运算符与赋值表达式n赋值运算符:=。n赋值运算符是双目运算符,左面的操作元必须是左面的操作元必须是变量,不能是常量或表达式变量,不能是常量或表达式。设x是一个整型变量,y是一个boolean型变量,x=20和y=true都是正确的赋值表达式,赋值运算符的优先级最低,结合方向右到左结合方向右到左。赋值表达式的值就是“=”左面变量的值。注意不要将赋值运算符“=”与等号运算符“=”混淆!赋值类型!JAVA程序设计程序设计赋值运算赋值运算 赋值运算的一般形式为:赋值运算的一般形式
7、为:变量变量=表达式表达式;注意:注意:x=y=z=10;在赋值符在赋值符“=”之前加上其它运算符之前加上其它运算符,就可以,就可以构成构成复合运算符复合运算符=。+=-=*=/=%=用法:用法:变量变量=表达式表达式;等价:等价:变量变量=变量变量 表达式表达式;x+=3;x=x+3;2006.02 By SCEMI XMJ5位运算符 ,&,|,n“&”,“|”,“”是双目运算符,对两个整型数据整型数据a,b按位进行运算,运算结果是一个整型数据c。运算法则是:与:如果a,b两个数据对应位都是1,则c的该位是1,否则是0。或:如果a,b两个数据对应位都是0,则c的该位是0,否则是1。异或:按位
8、加,如果a,b两个数据对应位相同,则c的该位是0,否则1。(2次异或运算,结果还原.例:Example3_1.java)“”是单目运算符。运算法则是:如果a对应位都是0,则c的该位是1,否则是0。n位运算符“&”,“|”,“”,“”操作元也可是char型数据,结果是int型 位右移位右移 不带符号右移不带符号右移例子例子class Example3_1 public static void main(String args)char a1=十十,a2=点点,a3=进进,a4=攻攻;char secret=8;a1=(char)(a1secret);a2=(char)(a2secret);a3=
9、(char)(a3secret);a4=(char)(a4secret);System.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);aa=0a0=an位运算符“&”,“|”,“”,“”操作元也可是boolean型数据,运算法则同逻辑运算,其区别是:“|”非短路,”|”是短路运算符.int x=0,y=3;if(x!=0&3=(y=x/y)/x!
10、=0&3=(y=x/y)y+;System.out.println(“y=”+y);6instanceof 和条件运算符?n 该运算符是双目运算符,左面的操作元是一个对象;右面是一个类。当左面的对象是右面的类创建的对象时,该运算符运算的结果是true,否则是false。a instanceof Stringn条件运算符?:operand?statement1:statement2 operand为一个布尔表达式,若为真则执行statement1,为statement2n 7运算符综述nJava的表达式就是用运算符连接起来的符合Java规则的式子。运算符的优先级优先级决定了表达式中运算执行的先后
11、顺序。例如,xy&!z相当于(x =8=!=9&10 11|12&13|14?:15=+=-=*=/=%=16&=|=P26nint i=31;nint j=i/10*10 /j?ndouble d=31;nint k=d/10*10 /k?int 变量变量1,bl2;/变量名合法变量名合法?short i=40000;/初始化合法初始化合法?char c=向向;/初始化合法初始化合法?若若“向向”?float f=2;/初始化合法初始化合法?若若2.0?正确正确?应怎样初始化应怎样初始化?n若若x=5,y=5,z=5,t=true;n则则t=(x!=5)&y=(z=y/x);/z=?n则则t
12、=(x!=5)&y=(z=y/x);/z=?int i=10;System.out.println(a+i);/?System.out.println(+a+i);/?System.out.println(“”+a+i);/?nshort a,b,c;na=2;nb=3;nc=a+b;3.2 语句概述语句概述nJava语句:n1方法调用语句:System.out.println(“hello”);n2表达式语句:a=a+3;n3复合语句a+;b=5/3;n4控制语句n5package 语句和 import语句n6.注释语句:/,/*/,/*/3.3 控制语句控制语句 nJava中的控制语句有以
13、下几类:分支语句:if-else,switch 循环语句:while,do-while,for 与程序转移有关的跳转语句:break,continue,return 例外处理语句:try-catch-finally,throwJAVA程序设计程序设计2006.02 By SCEMI XMJ Java语句提供了两条基本的分支选择语句语句提供了两条基本的分支选择语句if“二选一二选一”和和switch“多选一多选一”。if(条件条件)语句块语句块if(i%2=0)System.out.print(“偶数偶数”);条件必须为布尔表达式条件必须为布尔表达式C+不然不然 非非0即真即真 0即假即假i%2
14、=0 1.分支语句JAVA程序设计程序设计2006.02 By SCEMI XMJif.elseif(条件条件)语句块语句块1else 语句块语句块2if(i%2=0)System.out.print(“偶数偶数”);else System.out.print(“奇数奇数”);简洁写法:简洁写法:条件条件?语句语句1:语句语句2JAVA程序设计程序设计2006.02 By SCEMI XMJifelse ifif(条件条件1)语句块语句块1else if(条件条件2)语句块语句块2else if(条件条件3)语句块语句块3else if(条件条件4)语句块语句块4JAVA程序设计程序设计200
15、6.02 By SCEMI XMJif嵌套嵌套if(x=1)if(y=1)System.out.print(“1”);else System.out.print(“2”);else if(x!=1)if(y=1)System.out.print(“3”);else System.out.print(“4”);if语句可以嵌套使用语句可以嵌套使用 “最近匹配最近匹配”原则原则if(x=1)if(y=1)System.out.print(“1”);else System.out.print(“2”);else if(x!=1)if(y=1)System.out.print(“3”);else Sy
16、stem.out.print(“4”);分支语句求:Y=|X|;If(x0)y=10;z=20;else y=100;JAVA程序设计程序设计2006.02 By SCEMI XMJ2多分支多分支 switch 开关语句开关语句switch(表达式表达式)case 值值1:case 值值2:语句块语句块1;break;case 值值3:语句块语句块3;break;case 值值n:语句块语句块n;break;default:语句块语句块n+1;switch中表达式的值必须是byte,char,short,int类型的常量表达式,而不能用浮点类型或long类型,也不能为一个字符串。一个switc
17、h语句可以代替多个ifelse语句组成的分支结构,而switch语句从思路上显得更清晰。break语句用来在执行完一个case分支后,使程序跳出switch语句,即终止switch语句的执行(在一些特殊情况下,多个不同的case值要执行一组相同的操作,这时可以不用break)。如果将default语句放在了第一行,则不管expression与case中的value是否匹配,程序会从default开始执行直到第一个break出现。nint x=1;nswitch(x)case 1:case 2:System.out.println(“hello”);break;case 3:case 4:Sys
18、tem.out.println(“Bye!”);练习:根据1-3值输出相应星期几英文单词,其它,输出”不知道”。JAVA程序设计程序设计2006.02 By SCEMI XMJJava中有三种语句来实现循环结构中有三种语句来实现循环结构 3.4循环结构循环结构JAVA程序设计程序设计2006.02 By SCEMI XMJ1.whilewhile(条件表达式条件表达式)循环体循环体含义:当循环条件表达式为含义:当循环条件表达式为true时,重复执行时,重复执行循环体。循环体。当型循环当型循环注意:注意:while表达式的括号后一般不要加表达式的括号后一般不要加;int x=3;while(x=
19、3);x+;JAVA程序设计程序设计2006.02 By SCEMI XMJ2.dowhiledo 循环体循环体while(条件表达式条件表达式);含义:重复执行循环体,直到循环条件表达式为含义:重复执行循环体,直到循环条件表达式为false。直到型循环直到型循环至少被执行一次至少被执行一次注意:注意:while表达式的括号后一定要加表达式的括号后一定要加;JAVA程序设计程序设计2006.02 By SCEMI XMJ3.forfor(表达式表达式1;表达式表达式2;表达式表达式3)循环体循环体表达式表达式1:初始化表达式初始化表达式表达式表达式2:循环条件表达式循环条件表达式表达式表达式3
20、:循环后修改循环循环后修改循环条件的表达式条件的表达式特殊格式:特殊格式:for(;)/分号不能省表达式表达式1和和表达式表达式3可可使用逗号分隔的语句序列。int x=1;doSystem.out.println(“x=”+x);x+;while(x=10);int x=3;while(x=0)System.out.println(“ok1”);x+;int y=3;doSystem.out.println(“ok2”);y+;while(y=0);for(int x=1,y=1;x10;x+,y+)System.out.println(“y=“+y);分析程序练习练习编一程序求1-100的
21、和并输出。1 用循环语句实现2 java 循环语句由哪几个部分组成?JavaJava循环语句的组成部分循环语句的组成部分循环语句由四个部分组成:循环语句由四个部分组成:n初始化部分(初始化部分(initialization)initialization)n循环条件部分循环条件部分(loop-condition)(loop-condition)n循环体部分循环体部分(body)(body)n迭代部分迭代部分(iteration)(iteration)1-100求和的Java实现1 使用while语句int count=1;int sum=0;while(count=100)sum+=count;
22、count+;3 使用dowhile语句int count=1;int sum=0;do sum+=count;count+;while(count=100);2 使用for语句int sum=0,count;for(int count=0;count=100;count+)sum+=count;找出三种找出三种语句形式中的语句形式中的四个组成部分四个组成部分?比较三种循比较三种循环语句的差异。环语句的差异。将循环初始值将循环初始值count设为设为101,观察其观察其sum的值。的值。循环语句总结循环语句总结1for语句for(initialization;termination;itera
23、tion)body;2 while语句initializationwhile(termination)body;iteration;3 do-while语句initializationdo body;iteration;while(termination);termination,即即表达式必须是表达式必须是boolean类型值类型值。计算5+55+555+.的前10项的和.n1=5,s=5n2=n1*10+5S+=n2 n1=n2JAVA程序设计程序设计2006.02 By SCEMI XMJ循环嵌套循环嵌套不允许相互交叉嵌套不允许相互交叉嵌套分别输出分别输出1!.10!以及它们的和以及它们
24、的和 long sum=0;for(int i=1;i=10;i+)/外循环开始外循环开始 long m=1;/外循环初始变量外循环初始变量m和外循环控制变量和外循环控制变量i for(int j=1;j=i;j+)/内循环开始内循环开始 m*=j;/内循环变量内循环变量m和内循环控制变量和内循环控制变量j /内循环结束内循环结束 System.out.println(i+“!=”+m);sum+=m;/外循环变量外循环变量sum /外循环结束外循环结束 System.out.println(“1!+10!=”+sum);JAVA程序设计程序设计break break语句可以用在语句可以用在s
25、witch语句、循环语句和带标号语句、循环语句和带标号的语句块中,用来强制中断这些语句或语句块的执行。的语句块中,用来强制中断这些语句或语句块的执行。break 语句块标号语句块标号;4.跳转语句跳转语句continue continue语句可以用在循环语句和由循环语句构成的语句可以用在循环语句和由循环语句构成的带标号的语句块中,用来强制结束本轮次的循环,并开带标号的语句块中,用来强制结束本轮次的循环,并开始一个新轮次的循环。始一个新轮次的循环。continue 语句块标号语句块标号;continue与与break语句不同之处在于语句不同之处在于continue语句只是结束语句只是结束本轮次的
26、循环本轮次的循环(然后重新开始新一轮的循环然后重新开始新一轮的循环),而,而break语句则立即语句则立即结束整个循环语句。结束整个循环语句。带标号的带标号的带标号的带标号的breakbreak、continuecontinueSt:while(true)while(true)break st;例Example3_8返回语句returnreturn语句从当前方法中退出,返回到调用该方法的语句处,并从紧跟该语句的下一条语句继续程序的执行。返回语句有两种格式:return expression;return;return语句通常用在一个方法体的最后,否则会产生编译错误,除非用在if-else语句中
27、 应应 用用 举举 例例public class Sydl public static void main(String args)int x;for(x=0;x100;x+)if(x%3=2)&(x%5=3)&(x%7=2)System.out.println(这个数字是:这个数字是:+x);射雕英雄传射雕英雄传:今有物不知其数,三三数之剩二,五五数之剩:今有物不知其数,三三数之剩二,五五数之剩三,七七数之剩二,问物几何?也就是说,有一个未知数,这个三,七七数之剩二,问物几何?也就是说,有一个未知数,这个数除以三余二,除以五余三,除以七余二,问这个数是多少?数除以三余二,除以五余三,除以七余
28、二,问这个数是多少?“水仙花数水仙花数”:所谓:所谓“水仙花数水仙花数”是指一个三位数,其各位数字立是指一个三位数,其各位数字立方和等于该数本身。方和等于该数本身。例如例如 153是一个是一个“水仙花数水仙花数”public class Syhs public static void main(String args)int i,j,k,n;for(n=100;n0)x1=(x2+1)*2;/第一天的桃子数是第第一天的桃子数是第2天桃子数加天桃子数加1后的后的2倍倍 x2=x1;day-;System.out.println(x1);/书上例子书上例子3-6 例外处理语句 n包括try,cat
29、ch,finally,throw语句;与c/c+相比,是Java特有的语句。我们将在“异常处理”章节中介绍。作业nP34-2,7思考1 Java中有哪些运算符?这些运算符的优先关系是怎样的?2 Java 中有哪些控制语句?你了解每一种控制语句的语法规则吗?3.5 跳转语句 1break语句 在switch语句中,break语句用来终止switch语句的执行。使程序从switch语句后的第一个语句开始执行。在循环体中可以使用break语句。在一个循环中,如果在某次循环中执行了break语句,那么整个循环语句就结束。在Java中,可以为每个代码块加一个括号,一个代码块通常是用大括号括起来的一段代码
30、。加标号的格式如下:BlockLabel:codeBlock break语句的第二种使用情况就是跳出它所指定的块,并从紧跟该块的第一条语句处执行。JAVA程序设计程序设计2006.02 By SCEMI XMJbreak break语句可以用在语句可以用在switch语句、循环语句和带标号语句、循环语句和带标号的语句块中,用来强制中断这些语句或语句块的执行。的语句块中,用来强制中断这些语句或语句块的执行。break 语句块标号语句块标号;4.跳转语句跳转语句continue continue语句可以用在循环语句和由循环语句构成的语句可以用在循环语句和由循环语句构成的带标号的语句块中,用来强制结
31、束本轮次的循环,并开带标号的语句块中,用来强制结束本轮次的循环,并开始一个新轮次的循环。始一个新轮次的循环。continue 语句块标号语句块标号;continue与与break语句不同之处在于语句不同之处在于continue语句只是结束语句只是结束本轮次的循环本轮次的循环(然后重新开始新一轮的循环然后重新开始新一轮的循环),而,而break语句则立即语句则立即结束整个循环语句。结束整个循环语句。带标号的带标号的带标号的带标号的breakbreak、continuecontinue,类似于,类似于,类似于,类似于gotogotoSt:while(true)while(true)break st;outer:for(int i=0;i10;i+)/外层循环外层循环inner:for(int j=0;j10;j+)/内层循环内层循环if(ij)continue outer;int k=i+j;2 switch多分支开关语句 break语句用来在执行完一个case分支后,使程序跳出switch语句,即终止switch语句的执行(在一些特殊情况下,多个不同的case值要执行一组相同的操作,这时可以不用break)。如果将default语句放在了第一行,则不管expression与case中的value是否匹配,程序会从default开始执行直到第一个break出现。表达式是整型或字符型