单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二层,第三层,第四层,第五层,www.symbian-,#,1,Java,运算符、表达式、语句,学习目标,掌握赋值运算符的使用,掌握算术运算符的使用,掌握关系运算符的使用,掌握递增与递减运算符的使用,掌握逻辑运算符的使用,掌握括号运算符的使用,掌握位运算符的使用,掌握各个运算符的优先级,运算符,Java,中的语句有很多种形式,表达式就是其中一种形式。表达式是由操作数与运算符所组成:操作数可以是常量、变量也可以是方法,而运算符就是数学中的运算符号,如“,+”,、“,-”,、“*”、“,/”,、“,%”,等。以下面的表达式(,z+100,)为例,“,z”,与“,100”,都是操作数,而“,+”,就是运算符。,赋值运算符号,No.,赋值运算符号,描述,1,=,赋值,一元运算符,No.,一元运算符,描述,1,+,正号,2,负号,3,!,NOT,,否,算术运算符,No.,算术运算符,描述,1,+,加法,2,减法,3,*,乘法,4,/,除法,5,%,取模(取余数),关系运算符,No.,关系运算符,描述,1,大于,2,=,大于等于,4,=,小于等于,5,=,等于,6,!=,不等于,递增与递减运算符,No.,自增与自减运算符,描述,1,+,自增,变量值加,1,2,-,自减,变量值减,1,逻辑运算符,No.,逻辑运算符,描述,1,&,AND,,与,2,&,短路与,3,|,OR,,或,4,|,短路或,AND,及,OR,结果表,No.,条件,1,条件,2,结果,&,(与),|,(或),1,true,true,true,true,2,true,false,false,true,3,false,true,false,true,4,false,false,false,false,关于“,&”,与“,&”,、“,|”,与“,|”,的说明,“&”,与“,&”,&,表示短路与,对于“与”来说,要求所有的条件都判断,而如果使用“短路与”如果第一个条件为,false,,则后面的条件将不再判断。,“,|”,与“,|”,|,表示短路或,对于“或”来说,要求所有的条件都判断,而如果使用“短路或”如果第一个条件为,true,,则后面的条件将不再判断。,括号运算符,No.,括号运算符,描述,1,(),提高括号中表达式的优先级,位运算符,No.,逻辑运算符,描述,1,&,按位与,2,|,按位或,3,异或(相同为,0,,不同为,1,),4,取反,5,右移位,7,无符号右移位,位运算的结果表,No.,二进制数,1,二进制数,1,与操作(,&,),或操作(,|,),异或操作(,),1,0,0,0,0,0,2,0,1,0,1,1,3,1,0,0,1,1,4,1,1,1,1,0,位运算,public,class,OperatorDemo15,public,static,void,main(String args),int,x=3;,/3,的二进制数据:,00000000 00000000 00000000 00000011,int,y=6;,/6,的二进制数据:,00000000 00000000 00000000 00000110,System.,out,.println(x,/,与操作的结果:,00000000 00000000 00000000 00000010,System.,out,.println(x|y);,/,或操作的结果:,00000000 00000000 00000000 00000111,System.,out,.println(x y);,/,异或操作结果:,00000000 00000000 00000000 00000101,操作步骤,求出负数的反码,public,class,OperatorDemo16,public,static,void,main(String args),int,x=-3;,/-3,的二进制数据:,11111111 11111111 11111111 11111101,System.,out,.println(x+,的反码是:,+x);,左移和右移,在,Java,中也提供了左移“,”,两种操作。,左移操作是将运算数的二进制码整体左移指定位数,左移之后的空位使用,0,来填充,右移操作“,”,是将运算数的二进制码整体右移,右移之后空出来的位置以符号位填充。如果是整数使用“,0”,填充,如果是负数使用“,1”,填充。,左移操作,public,class,OperatorDemo17,public,static,void,main(String args),int,x=3;,/3,的二进制数据:,00000000 00000000 00000000 00000011,System.,out,.println(x+,左移,2,位之后的内容:,+(x 2);,System.,out,.println(y+,右移,2,位之后的内容:,+(y 2);,无符号右移,以上的右移操作属于带符号位的右移操作,在,Java,中也提供了无符号的右移操作符“,”,,使用此操作将以“,0”,填充空出来的位。,无符号右移,public,class,OperatorDemo19,public,static,void,main(String args),int,x=3;,/3,的二进制数据:,00000000 00000000 00000000 00000011,int,y=-3;,/-3,的二进制数据:,11111111 11111111 11111111 11111101,System.,out,.println(x+,右移,2,位之后的内容:,+(x 2);,System.,out,.println(y+,右移,2,位之后的内容:,+(y 2);,运算符的优先级,优先级,运算符,类,结合性,1,(),括号运算符,由左至右,1,方括号运算符,由左至右,2,!,、,+,(正号)、,-,(负号),一元运算符,由右至左,2,位逻辑运算符,由右至左,2,+,、,-,递增与递减运算符,由右至左,3,*,、,/,、,%,算术运算符,由左至右,4,+,、,-,算术运算符,由左至右,5,位左移、右移运算符,由左至右,6,、,=,、,、,=,关系运算符,由左至右,7,=,、,!=,关系运算符,由左至右,8,&,(位运算符,AND,),位逻辑运算符,由左至右,9,(位运算符号,XOR,),位逻辑运算符,由左至右,10,|,(位运算符号,OR,),位逻辑运算符,由左至右,11,&,逻辑运算符,由左至右,12,|,逻辑运算符,由左至右,13,?:,三目运算符,由右至左,14,=,赋值运算符,由右至左,简洁的表达式,No.,运算符,范例用法,说明,描述,1,+=,a+=b,a+b,的值存放到,a,中,a=a+b,2,-=,a-=b,a-b,的值存放到,a,中,a=a-b,3,*=,a*=b,a*b,的值存放到,a,中,a=a*b,4,/=,a/=b,a/b,的值存放到,a,中,a=a/b,5,%=,a%=b,a%b,的值存放到,a,中,a=a%b,简洁表达式的范例,No.,运算符,范例,执行前,说明,执行后,a,b,a,b,1,+=,a+=b,12,3,a+b,的值存放到,a,中(同,a=a+b,),15,3,2,-=,a-=b,12,3,a-b,的值存放到,a,中(同,a=a b,),9,3,3,*=,a*=b,12,3,a*b,的值存放到,a,中(同,a=a*b,),36,3,4,/=,a/=b,12,3,a/b,的值存放到,a,中(同,a=a/b,),4,3,5,%=,a%=b,12,3,a%b,的值存放到,a,中(同,a=a%b,),0,3,6,b+,a*=b+,12,3,a*b,的值存放到,a,后,,b,加,1,(同,a=a*b,;,b+,),36,4,7,+b,a*=+b,12,3,b,加,1,后,再将,a*b,的值存放到,a,(同,b+,;,a=a*b,),48,4,8,b-,a*=b-,12,3,a*b,的值存放到,a,后,,b,减,1,(同,a=a*b,;,b-,),36,2,9,-b,a*=-b,12,3,b,减,1,后,再将,a*b,的值存放到,a,(同,b-,;,a=a*b,),24,2,