第3章运算符、表达式与条件分支语句_第1页
第3章运算符、表达式与条件分支语句_第2页
第3章运算符、表达式与条件分支语句_第3页
第3章运算符、表达式与条件分支语句_第4页
第3章运算符、表达式与条件分支语句_第5页
已阅读5页,还剩31页未读 继续免费阅读

下载本文档

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

文档简介

第3章运算符、表达式与语句何中越计算机科学学院上章知识回顾基本数据类型逻辑类型、整数类型、字符类型、浮点类型基本数据类型的转换自动转换和强制转换数据的输入输出System.out.printf()数组(一维数组、二维数组)数组的声明、创建、数组元素的使用、数组的初始化、数组的引用Contents语句表达式运算符运算符Java支持如下运算符:算术运算符:+,-,*,/,%,++,--关系运算符:>,<,>=,<=,==,!=逻辑运算符:!,&&,||位运算符:&,|,^,~,>>,<<,>>>赋值运算符:=扩展赋值运算符:+=,-+,*=,/=字符串连接运算符:+单目运算符结合性是从左到右运算符是一些特殊的符号,主要用于数学函数、一些类型的赋值语句和逻辑比较方面,JAVA提供了丰富的运算符。3.1算术运算符算术运算符主要有:+-*/%(二元运算符)++--(单目运算符)/:除法例如:7/2结果是3为什么不是3.5?%:取余例如:12%10结果是2+-还可以作为数据的正负符号inta=5;b=3;intc=a/b;intd=a%b;程序结果是?算术运算符++--(自增自减运算符、单目)可以放在操作数之前也可以放在操作数之后(操作数必须是一个整型或者浮点型变量)自增自减运算符的作用是使变量的值增1或者减1++x:使用x前,先使x的值加1--x:使用x前,先使x的值减1x++:使用x之后,使x的值加1x--:使用x之后,使x的值减1例如:inta=b=3;intc=a++;intd=++b;结果是?inta=b=3;intc=a--;intd=--b;结果是?自加自减运算符例题注意!!请看课后习题1算术混合元算的精度:按照运算符两边的操作元的最高精度保留结果的精度。char类型数据和整型数据运算结果的精度是int。3.2关系运算符关系运算符用来比较两个值的关系,关系运算符的运算结果是boolean类型数据。当运算符对应的关系成立时,运算结果是true,否则是false。大小关系运算符、等于不等关系关系运算符运算用法举例结果==相等于2==1fasle!=不等于2!=1true>大于2>1true<小于2<1false>=大于等于2>=1true<=小于等于2<=1false注意:符号之间没有空格等于符号==和赋值符号=的差别3.3逻辑运算符逻辑运算符:布尔型数据的运算,运算结果也是布尔型数据!——逻辑非:单目

&&——逻辑与||——逻辑或:双目例如:1>8&&9>2:1>8||6>2:9>3&&3<2:9>3||3<2:结果false结果true结果是false结果是trueP23:短路运算符3.4赋值运算符与扩展赋值运算符赋值运算符=:左边的操作元必须是变量,不能是常量或表达式当”=“两侧数据类型不一致时,可以适用默认类型转换或使用强制类型转换原则进行处理注意:可以将整型常量直接赋值给byte、short、char等类型变量,而不需要进行强制类型转换,只要不超出其范围

byteb=12;charc=100; bytebb=256;//错误shorts=-32769;//错误了解扩展赋值运算符:+=,-+,*=,/=赋值运算符例子等价表达式+=i+=8i=i+8-=i-=8i=i-8*=i*=8i=i*8/=i/=8i=i/8%=i%=8i=i%83.6位运算符位运算主要是对二进制位进行操作:位运算符运算用法用法&按位与只有当进行逻辑操作的两个二进制位都为1时,操作结果才为1Op1&op2|按位或当进行操作的两个二进制位有一个为1时,操作结果为1op1|op2^按位异或当进行操作的两个二进制位不相同时,操作结果才为1op1^op2~按位取反对操作数的各个二进制位取反~op1例子:11111010&01011100=0101100011101100|00010101=1111110111000101^01011100=10011001~11000101=00111010请看教材25页例题3-2位运算符也可以操作逻辑型的数据,但是和逻辑运算符&&、||、!有所不同,请理解教材P25页的举例:((y=1)==0)&&((x=6)==6);((y=1)==0)&((x=6)==6);X的值??请思考:a^a=?0^a=?

如果a^b=c

那么c^b=?请看课后习题63.7条件运算符条件运算符是一个三目运算符,它的符号是?:

需要连接三个操作元。其中op1为boolean类型表达式,先计算op1的值,若为true,则整个三目运算的结果为op2的值,否则整个运算结果为op3的值运算法则:

op1?op2:op3当op1的值是true时,op1?op2:op3的运算结果是op2的值;当op1的值是false时,op1?op2:op3的运算结果是op3的值;例如:12>8?100:20012<8?100:200例如:intscore=80;intx=-100;Stringtype=score<60?“不及格”:”几个”;x==0?0:-1;字符串连接符+“+”除用于算术加法运算外,还可用于对字符串进行连接操作Strings=“hello”+”world”;“+”运算符两侧的操作数中只要有一个是字符串(String)类型,系统会自动将另外一个操作数转换为字符串然后再进行连接intc=12;System.out.println(“c=“+c);在进行打印的时候,无论任何类型,都自动转换为字符串进行打印System.out.println(c);3.5移位运算符(难点)移位运算符用来对二进制进行操作,分为左移位和右移位对于正数将高位用0填充;负数用1填充,然后再进行移位运算左移<<“a<<b;”将二进制形式的a逐位左移b位,左边的高位的0和1会被逐位移出,低位空出的b位补0。对于byte或short型数据,a<<n的运算结果是int型精度。例如:bytea=4;a<<1;当进行a<<1运算时,计算系统首先将a升级为int型数据。带符号右移>>“a>>b;”将二进制形式的a逐位右移b位,最高位空出的b位补原来的符号位(正数用0,负数用1)正数不断右移的结果是0,负数不断右移的结果是-1inta=4;a>>11111100011111111111111111111111111111000bytea=-811111111111111111111111111110000在进行a<<1运算时,首先将11111000升级为int型:将高位用1填充:

然后再进行移位运算运算符的优先级(补充重点)运算符优先级运算符结合性1[]()从左到右2!++--+-从右到左3*/%从左到右4+-从左到右5>><<>>>从左到右6>>=<<=从左到右7==!=从左到右8&从左到右9^从左到右10|从左到右11&&从左到右12||从左到右13?:从左到右14=从右到左*运算符的优先级决定了表达式中运算执行的先后顺序*运算符的结合性决定了相同级别的运算符执行的先后顺序高低表达式表达式是符合一定语法规则的运算符和操作数的序列a5.0+a(a-b)*c-4i<30&&i%10!=0表达式的类型和值对表达式中操作数进行运算得到的结果称为表达式的值表达式值的数据类型即为表达式的类型表达式的运算顺序应按照运算符的优先级由高到低的顺序进行优先级相同的运算符按照事先约定的结合方向进行请思考1、设a=3,b=12计算下列表达式的值:--a%++b(++a)<<aa<10&&a>10?a:b2、

inta=9,b=-9,x=0,y=0,z=0;

x=a<<3;

y=a>>1;

z=b>>1;x,y,z的值是多少?JAVA语句Java里的语句可分为以下5类:(1)方法调用语句在第4章将介绍类、对象等概念,对象可以调用类中的方法产生行为,如:例子1中的

reader.nextInt();

(2)表达式语句一个表达式的最后加上一个分号就构成了一个语句,称作表达式语句。分号是语句不可缺少的部分。例如,赋值语句:x=23;语句(3)复合语句可以用“{”和“}”把一些语句括起来构成复合语句,一个复合语句也称作一个代码块。例如,

{z=23+x;System.out.println("hello");}(4)控制语句控制语句包括:条件分支语句、循环语句和跳转语句。(5)package语句和import语句

package语句和import语句与类、对象有关,将在第4章讲解。控制语句

1、条件分支语句:根据不同条件,执行不同语句1)if…else2)switch开关语句2、循环语句:重复执行某些动作

1)while循环2)do…while循环3)for循环3、跳转语句:

break;continue;条件分支语句:简单的if条件语句条件语句可以根据不同的条件执行不同的语句。If条件语句用于告诉程序在某个条件成立的情况下执行某段程序,而在另一种情况下执行另外的语句。

1、简单的if条件语句:if(boolean类型表达式){

语句或语句块;}boolean类型表达式:必要参数,表示它最后返回的结果必须是一个布尔值。它可以是一个单纯的布尔变量或常量,也可以是使用关系或者布尔运算符的表达式。语句或语句块:可选参数,可以是一条或者多条语句,当表达式的值为true时,执行这些语句。若只有一条语句,则可以省略条件语句中的{},但最好不要省略。

表达式语句序列TFIf条件语句的执行过程If条件语句例子publicclassGetif{//创建类

publicstaticvoidmain(Stringargs[]){//主方法

intx=45;//声明int型变量x,并赋给初值

inty=12;//声明int型变量y,并赋给初值

if(x>y){//判断x是否大于y System.out.println("变量x大于变量y");//如果条件成立,输出的信息

}

if(x<y){//判断x是否小于y System.out.println("变量x小于变量y");//如果条件成立,输出的信息

}}}条件分支语句:if-else语句2、如果满足某种条件,就进行某种处理,否则就进行另一种处理。if(boolean类型表达式){

语句或语句块; }else{

语句或语句块; }如果if后表达式的值为true,则执行if语句的复合语句;如果表达式的值为false,则执行else后面的复合语句。表达式语句序列语句序列TFif-else语句例子publicclassGetifelse{ publicstaticvoidmain(Stringargs[]){//主方法

intmath=95;//声明int型局部变量,并赋给初值95 intenglish=56;//声明int型局部变量,并赋给初值56

if(math>60){//使用if语句判断math是否大于60 System.out.println("数学及格了");//条件成立时输出信息

}else{ System.out.println("数学没有及格");//条件不成立输出的信息

}

if(english>60){//判断英语成绩是否大于60 System.out.println("英语及格了");//条件成立输出的信息

}else{ System.out.println("英语没有及格");//条件不成立输出的信息

} }}请思考:对于if-else语句如果使用三元运算符?:怎么简化。if(a>0)

{

b=a;

}

else

{

b=-a;

}b=a>0?a:-a条件分支语句:if-elseif多分支语句(嵌套)3、if-elseif多分支语句多分支语句用于针对某一事件的多种情况进行处理:如果满足某种条件,就进行某种处理,否则如果满足另一种条件则执行另一种处理。if(boolean类型表达式){

语句块1; }elseif(boolean类型表达式){

语句块2; }…else{

语句块n; }条件1条件2条件n语句块1语句块2语句块n语句块n+1FFFTTTifelseIfelseIfelseIf-elseif多分支选择:上节知识回顾表达式语句复合语句控制语句:条件分支、循环、跳转条件分支:ifelse(简单的if、ifelse、嵌套的ifelse)If语句举例publicclassGetTerm{//创建主类

publicstaticvoidmain(Stringargs[]){//主方法

intx=20;//声明int型局部变量

if(x>30){//判断变量x是否大于30 System.out.println("a的值大于30");//条件成立的输出信息

}elseif(x>10){//判断变量x是否大于10 System.out.println("a的值大于10,但小于30");//条件成立的输出信息

}elseif(x>0){//判断变量x是否大于0 System.out.println("a的值大于0,但小于10");//条件成立的输出信息

}else{//当以上条件都不成立时,执行的语句块

System.out.println("a的值小于0");//输出信息

} }}}例三:运行例3-3嵌套的if语句的例子publicclassifTest{publicstaticvoidmain(Stringargs[]){intintTestScore=82;chargrade;if(intTestScore>=90){Grade=‘A’}elseif(intTestScore>=80){grade=‘B’}elseif(intTestScore>=70){grade=‘C’}elseif(intTestScore>=60){grade=‘D’}else{grade=‘F’}System.out.println(“分数=”+intTestScore);System.out.println(“评价=”+grade);}}条件分支语句:switch语句switch语句是多分支的开关语句:它的形式如下switch(表达式){case常量值1:若干语句break;case常量值2:若干语句break;……case常量值n:若干语句break;default:若干语句}1、switch语句中表达式的值必须是整型或字符型2、case子句中的常量值1—n也必须是整型或字符型。,且所有case子句中的值应是不同的;3、default子句是任选的;4、break语句用来在执行完一个case分支后使程序跳出switch语句块;

switch语句首先计算表达式的值,如果表达式的值与某个case后面的常量值相同,就执行该case里的语句,直到遇到break语句为止。若没有任何常量值与表达式的值相同,则执default后面的若干语句。switch语句例子publicclassGetSwitch{//创建类

publicstaticvoidmain(Stringargs[]){//主方法

intweek=2;//定义int型变量week switch(week){//指定switch语句的表达式为变量week case1://定义case语句中的常量为1 System.out.println("Monday");//输出信息

break; case2://定义case语句中的常量为2 System.out.println("Tuesday"); break; case3://定义case语句中的常量为3 System.out.p

温馨提示

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

评论

0/150

提交评论