1、Production and Operations Management第章运算符、表达式和语句第章运算符、表达式和语句3.1 运算符与表达式运算符与表达式3.2 语句概述语句概述3.3 控制语句控制语句3.4 循环语句循环语句3.5 break和和continue语句语句 Production and Operations Management3.1 运算符与表达式运算符与表达式Java 提供了丰富的运算符,如算术运算符、提供了丰富的运算符,如算术运算符、关系运算符符、逻辑运算符、位运算符等。关系运算符符、逻辑运算符、位运算符等。本节将介绍大部分运算符。本节将介绍大部分运算符。Product
2、ion and Operations Management1 算术运算符与表达式算术运算符与表达式 用算术符号和括号连接起来的符合用算术符号和括号连接起来的符合java语法规则的式语法规则的式子,称为算术表达式,如子,称为算术表达式,如x+2*y-30+3*(y+5)。加减运算符:加减运算符:+,-,加减运算符的结合方向是从左到加减运算符的结合方向是从左到右。,加减运算符的优先级是右。,加减运算符的优先级是4级。级。乘,除和求余运算符:乘,除和求余运算符:*,/,%,运算符的结合方向运算符的结合方向是从左到右是从左到右.乘除运算符的操作元是整型或浮点型数据。乘除运算符的操作元是整型或浮点型数据
3、。*,/,%运算符的优先级是运算符的优先级是3级。级。算术混合运算的精度算术混合运算的精度精度从精度从“底底”到到“高高”排列的顺序是:排列的顺序是:byte short int long float doubleJava将按运算符两边的操作元的最高精度保留结将按运算符两边的操作元的最高精度保留结果的精度,例如:果的精度,例如:5/2的结果是的结果是2,要想得到,要想得到2.5,必须写成必须写成5.0/2或或5.0f/2。Production and Operations Management自增,自减运算符:自增,自减运算符:+,-自增、自减运算符是单目运算符,可以放在自增、自减运算符是单目
4、运算符,可以放在操作元之前,也可以放在操作元之后。操作操作元之前,也可以放在操作元之后。操作元必须是一个整型或浮点型变量。作用是使元必须是一个整型或浮点型变量。作用是使变量的值增变量的值增1或减或减1+x(-x)表示在使用表示在使用x之前,先使之前,先使x的值加的值加(减)(减)1。x+(x-)表示在使用表示在使用x之后,使之后,使x的值加的值加(减)(减)1。Production and Operations Management3算术混合运算的精度算术混合运算的精度 精度从精度从“底底”到到“高高”排列的顺序是:排列的顺序是:byte short int long float double
5、Java将按运算符两边的操作元的最高精度保留结果的将按运算符两边的操作元的最高精度保留结果的精度,例如:精度,例如:5/2的结果是的结果是2,要想得到,要想得到2.5,必须写成必须写成5.0/2或或5.0f/2。char型数据和整型数据运算结果的精度是型数据和整型数据运算结果的精度是int。例如:。例如:byte x=7;那么那么:B+x;的结果是的结果是int型,因此下列写法是不正型,因此下列写法是不正确的,确的,char ch=B+x;应当写成:应当写成:char ch=(char)(B+x);Production and Operations Management4关系运算符与关系表达式
6、关系运算符与关系表达式关系运算符:关系运算符:,=,8,(x+y)80。Production and Operations Management逻辑运算符与逻辑表达式 逻辑运算符包括:逻辑运算符包括:&,|,!。其中。其中&、|为双为双目运算符,实现逻辑与、逻辑或;!为单目运算符,目运算符,实现逻辑与、逻辑或;!为单目运算符,实现逻辑非。实现逻辑非。逻辑运算符的操作元必须是逻辑运算符的操作元必须是boolean型数据型数据,逻辑运算符可以用来连接关系表达式。例,逻辑运算符可以用来连接关系表达式。例如,如,:28&92的结果为的结果为false;28|92的结果为的结果为true。例例1:X=1
7、;(y=1)=0)&(x=6)=6);例例2X=1;(y=1)=1)&(x=4)=5);表达式的逻辑表达式的逻辑值是多少?值是多少?X=?表达式的逻辑表达式的逻辑值是多少?值是多少?X=?例例3X=1;(y=1)=1)|(x=4)=4);例例4:X=1;(y=1)=0)|(x=4)=4);Production and Operations Management6赋值运算符与赋值表达式赋值运算符与赋值表达式赋值运算符:赋值运算符:=。赋值运算符是双目运算符,左面的操作元必赋值运算符是双目运算符,左面的操作元必须是变量,不能是常量或表达式。须是变量,不能是常量或表达式。设设x是一个整型变量,是一个
8、整型变量,y是一个是一个boolean型变型变量,量,x=20和和y=true都是正确的赋值表达式,都是正确的赋值表达式,赋值运算符的优先级较低,是赋值运算符的优先级较低,是14级,结合方级,结合方向右到左。向右到左。赋值表达式的值就是赋值表达式的值就是“=”左面变量的值。注左面变量的值。注意不要将赋值运算符意不要将赋值运算符“=”与等号运算符与等号运算符“=”混淆。混淆。Production and Operations Management7位运算符位运算符“&”是双目运算符,对两个整型数据是双目运算符,对两个整型数据a,b按位进行按位进行运算,运算结果是一个整型数据运算,运算结果是一个整
9、型数据c。运算法则是:如。运算法则是:如果果a,b两个数据对应位都是两个数据对应位都是1,则,则c的该位是的该位是1,否,否则是则是0。“|”是双目运算符。对两个整型数据是双目运算符。对两个整型数据a,b按位进行按位进行运算,运算结果是一个整型数据运算,运算结果是一个整型数据c。运算法则是:如。运算法则是:如果果a,b两个数据对应位都是两个数据对应位都是0,则,则c的该位是的该位是0,否,否则是则是1。“”是单目运算符。对一个整型数据是单目运算符。对一个整型数据a按位进行运按位进行运算,运算结果是一个整型数据算,运算结果是一个整型数据c。运算法则是:如果。运算法则是:如果a对应位都是对应位都是
10、0,则,则c的该位是的该位是1,否则是,否则是1。“”是双目运算符。对两个整型数据是双目运算符。对两个整型数据a,b按位进行按位进行运算,运算结果是一个整型数据运算,运算结果是一个整型数据c。运算法则是:如。运算法则是:如果果a,b两个数据对应位相同,则两个数据对应位相同,则c的该位是的该位是0,否则,否则是是1。Production and Operations Management例子1(效果如图(效果如图3.1)class Example3_1 public static void main(String args)char a1=十十,a2=点点,a3=进进,a4=攻攻;char se
11、cret=8;a1=(char)(a1secret);a2=(char)(a2secret);a3=(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);Production and Operations Management例例3-2class Example3_2
12、 public static void main(String args)int x,y=10;if(x=0)=0)|(y=20)=20)System.out.println(现在现在y的值是的值是:+y);if(x=0)=0)&(y=20)=20)System.out.println(现在现在y的值是的值是:+y);if(x=0)=1)|(y=20)=20)System.out.println(现在现在y的值是的值是:+y);int a,b=10;if(a=0)=0)|(b=20)=20)System.out.println(现在现在b的值是的值是:+b);Production and Op
13、erations Management8instanceof 运算符运算符 该运算符是双目运算符,左面的操作元是一该运算符是双目运算符,左面的操作元是一个对象;右面是一个类。个对象;右面是一个类。当左面的对象是右面的类创建的对象时,该当左面的对象是右面的类创建的对象时,该运算符运算的结果是运算符运算的结果是true,否则是,否则是false。Production and Operations Management9运算符综述运算符综述Java的表达式就是用运算符连接起来的符的表达式就是用运算符连接起来的符合合Java规则的式子。运算符的优先级决定规则的式子。运算符的优先级决定了表达式中运算执行
14、的先后顺序。了表达式中运算执行的先后顺序。例如,例如,xy&!z相当于相当于(xy)&(!z),没,没有必要去记忆运算符号的优先级别,在编写有必要去记忆运算符号的优先级别,在编写程序时可尽量的使用括号()运算符号来实程序时可尽量的使用括号()运算符号来实现你想要的运算次序,以免产生难以阅读或现你想要的运算次序,以免产生难以阅读或含糊不清的计算顺序。运算符的结合性决定含糊不清的计算顺序。运算符的结合性决定了并列相同级别的运算符的先后顺序,例如,了并列相同级别的运算符的先后顺序,例如,加减的结合性是从左到右,加减的结合性是从左到右,8-5+3相当于相当于(8-5)+3。逻辑否运算符!的结合性是。逻
15、辑否运算符!的结合性是右到左,!右到左,!x 相当于相当于!(!x)。Production and Operations Management3.2 语句概述Java里的语句可分为以下五类:里的语句可分为以下五类:1方法调用语句方法调用语句2表达式语句表达式语句 3复合语句复合语句4控制语句控制语句5package 语句和语句和 import语句语句Production and Operations Management1方法调用语句方法调用语句方法调用语句方法调用语句System.out.println(现在现在y的值是的值是:+y);/class XiyoujiRenwu float he
16、ight,weight;String head,ear,hand,foot,mouth;void speak(String s)/构造方法构造方法 head=歪着头歪着头;System.out.println(s);.sunwukong=new XiyoujiRenwu();.sunwukong.speak(老孙我重老孙我重1000斤,我想骗八戒背斤,我想骗八戒背我我);/对象调用方法对象调用方法 Production and Operations Management3.3 控制语句 Java 语言的控制语句有语言的控制语句有2种类型,种类型,即条件语句即条件语句if else,和,和swi
17、tch开关语句。开关语句。案例案例1:现有现有3个数个数X=1345,Y=234,Z=4567,从中找出最大数和最小数。从中找出最大数和最小数。分析:分析:假设假设max保存最大数;保存最大数;将将xmaxmax;maxmax与与y y比较,比较,如果如果maxY;将;将Ymaxmax;maxmax与与Z Z比较,比较,如果如果maxZ;将;将Zmaxmax;输出最大数:输出最大数:Max;Production and Operations Management开始开始X,Y,Zmax=x;MaxY?Max=Y;MaxZ?Max=Z;输出输出max结束结束是(是(Y)否(否(N)是(是(Y)否
18、(否(N)请同学们绘制输出最小数的流程请同学们绘制输出最小数的流程请同学们绘制三个数按从小到大排序的流程请同学们绘制三个数按从小到大排序的流程Production and Operations Management1条件控制语句条件控制语句if 语句的一般形式:语句的一般形式:if(表达式表达式)若干语句若干语句 Production and Operations Managementif-else 语句的一般形式:语句的一般形式:if(表达式表达式)若干语句若干语句 else 若干语句若干语句 Production and Operations Management2 switch开关语句开
19、关语句 switch 语句是多分支的开关语句,它的一般格式定义如下(其中语句是多分支的开关语句,它的一般格式定义如下(其中break语句是可选的):语句是可选的):switch(表达式表达式)case 常量值常量值1:若干个语句若干个语句 break;case 常量值常量值2:若干个语句若干个语句 break;.case 常量值常量值n:若干个语句若干个语句 break;default:若干语句若干语句Production and Operations Management案例案例2:w用用Java实现求下列表达式的值。实现求下列表达式的值。3,5421,35,62)(23322xxxxxxx
20、xxxfw分析:由于表达式与自变量分析:由于表达式与自变量x取值不同而不同。取值不同而不同。w一般情况下采用分支语句。一般情况下采用分支语句。Production and Operations Managementpublic class Example3_5 public static void main(String args)int x=1;float y;switch(x)case 1:y=x3-3x2;System.out.println(y);break;case 3:y=-2x3+4x2+5;System.out.println(y);break;case 5:y=x2+2x+6
21、;System.out.println(y);break;default:System.out.println(没有般配的没有般配的X+(x);如果在如果在case 1之后没有之后没有break语句结果怎样呢?语句结果怎样呢?Production and Operations Management实例:实例:public class java3_2public static void main(String args)char c=0;for(int i=1;i=4;i+)switch(i)case 1:c=b;System.out.println(c);case 2:c=e;System.o
22、ut.println(c);break;case 3:c=p;System.out.println(c);default:System.out.println(!);输出结果:输出结果:Production and Operations Management案例案例3:现有一数组存放有现有一数组存放有10个数个数1345,234,4567,234,567,678,12,456,901,20,要求:要求:(1)计算这)计算这10个数的和;个数的和;(2)将)将10个数按从小到大的顺序输出。个数按从小到大的顺序输出。分析:对于求分析:对于求10个数的和个数的和设设sum为存放为存放10个数的和;数
23、组个数的和;数组a存放存放10个数;个数;sum=sum+ai;i=0,1,.9输出输出sum。Production and Operations Management开始开始A10初始化初始化Sum=0;i=0;i=10?Sum=sum+ai;输出输出SUM结束结束是(是(Y)否(否(N)i=i+1;(1)计算)计算这这10个数的个数的和;和;Production and Operations Management开始开始A10初始化初始化Int j=0;Int i=0;j10?结束结束是(是(Y)否(否(N)j=j+1;i=0;iai+1?Temp=ai;ai=ai+1;Ai+1=temp
24、;i=i+1是(是(Y)是(是(Y)否(否(N)否(否(N)输出数组输出数组A否(否(N)(2)将)将10个数按从小到大的个数按从小到大的顺序输出。顺序输出。是(是(Y)Production and Operations Management3.4 循环语句1for循环语句循环语句for 语句是语句是java程序设计中最有用的循环程序设计中最有用的循环语句之一,语句之一,for语句的格式如下:语句的格式如下:for(表达式表达式1;表达式;表达式2;表达式;表达式3)若干语句若干语句 Production and Operations Management2while 循环循环一般格式:一般格
25、式:while(表达式表达式)若干语句若干语句 3do-while循环循环一般格式:一般格式:do 若干语句若干语句 while(表达式表达式);Production and Operations Management3.5 break和continue语句break和和continue语句是指用关键语句是指用关键break或或continue加上分号构成的语句,例如:加上分号构成的语句,例如:break;在循环体中可以使用在循环体中可以使用break语句和语句和continue语句。在一个循环中,比如循环语句。在一个循环中,比如循环50次的循环次的循环语句中,如果在某次循环中执行了语句中,如
26、果在某次循环中执行了break语语句,那么整个循环语句就结束。如果在某次句,那么整个循环语句就结束。如果在某次循环中执行了循环中执行了continue语句,那么本次循环语句,那么本次循环就结束,即不再执行本次循环中循环体中就结束,即不再执行本次循环中循环体中continue语句后面的语句,而转入进行下一语句后面的语句,而转入进行下一次循环。次循环。Production and Operations Management实例实例class Example3_8 public static void main(String args)int sum=0,i,j;for(i=1;i=10;i+)if(i%2=0)/计算计算1+3+5+7+9 continue;sum=sum+i;System.out.println(sum=+sum);for(j=2;j=100;j+)/求求50以内的素数以内的素数 for(i=2;ij/2)System.out.println(+j+是素数是素数);Production and Operations Management作业:作业:P33页页 第第1、2、3。