java运算符、表达式与语句.ppt
《java运算符、表达式与语句.ppt》由会员分享,可在线阅读,更多相关《java运算符、表达式与语句.ppt(113页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、第三章 Java实用技术 运算符、表达式与语句n运算符的作用是与一定的运算数据组成表达式来完成相应的运算。对不同的数据类型,有着不同的运算符。对运算符,有运算对象(操作数)个数及类型、运算优先级、结合性等特性。nJava语言对运算符的优先级、结合性和求值顺序有明确的规定,从根本上消除了运算符运算过程的二义性以及结果不统一的弊端。n运算符的优先级是指不同运算符在混合运算中执行的先后顺序。在Java语言中共有17种优先级,每个运算符分属确定的一个优先级别。Java语言严格按照运算符的优先级由高到低地顺序执行各种运算。n运算符的结合性确定同级运算符的运算顺序。左结合性规定,运算数据先与左边的运算符结
2、合,然后与右边的运算符结合。右结合性正好相反。n3.1 算术运算符n算术运算符按操作数的多少可分为一元(或称单目)和二元(或称双目)两类,一元运算符一次对一个操作数进行操作,二元运算符一次对两个操作数进行操作。算术运算符的操作数类型是数值类型。n1一元算术运算符运 算 符实际操作例 子功 能+正值负号加1减1+xxx+,+xx,x对x取负将x的值加1后再放回变量x将x的值减1后再放回变量x表表3-1一元算术运算符一元算术运算符前置运算:+、-位于操作数前,如+x;-x;n对前置运算变量先操作后引用后置运算:+、-位于操作数后,如x+;x-;n对后果置运算变量先引用后操作int a=10,b;b
3、=a+;/a=11,b=10int x=10,y;y=-x;/x=9,y=9n2二元算术运算符n算术运算符的第二种类型是二元运算符,这种运算符并不改变操作数的值,而是返回一个必须赋给变量的值。表3-2列出了二元算术运算符。二元算术运算符具有左结合性。运 算 符实际操作例 子功 能+*/%加运算减运算乘运算除运算取模运算a+baba*ba/ba%b求a与b相加的和求a与b相减的差求a与b相乘的积求a除以b的商求a除以b的余数表表3-2二元算术运算符二元算术运算符n双目运算符+、-、*、/,如两个操作数都是整型,则结果是整型;否则是实型。5/2结果是2而不是2.5。n%运算符可用于求整数或实数除的
4、余数。例:int a=7;int b=2;a/b=3 /整除a%b=1 /取余n注意:算术运算符的总体原则是先乘除、再加减,括号优先。整数除法会直接去掉小数,而不是进位。对取模运算符%来说,其操作数可以为浮点数。如:37.2%10=7.2。Java对加运算符进行了扩展,使它能够进行字符串的连接,如“Hello+“World,得到串“HelloWorld“.n3.算术表达式n用算术符号和操作元连接起来的符合java语法规则的式子,称为算术表达式。n例如:x+2*y-30+3*(y+5)-12+(-n)n算术混合运算的精度按表达式中精度最高的计算char+int=int,char ch=(char
5、)(H+k);n3.2 关系运算符n关系运算符用于确定一个数据与另一个数据之间的关系,即进行关系运算。所谓关系运算是比较运算,将两个值进行比较。关系运算的结果值为true或false(布尔型)。表3-3列出了Java语言提供的6种关系运算符,它们都是双目运算符。n在这里要指出的是,等于运算符=不要与赋值运算符=混淆,以至于关系运算变成了赋值运算。运 算 符实际操作例 子=!=小于大于小于或等于大于或等于等于不等于aba=ba=ba!=b表表3-3关系运算符关系运算符n关系表达式n通过关系运算符形成的表达式n例如:2418,(x+y+z)30+xn3.3 逻辑运算符n逻辑运算符可以对布尔类型的数
6、据(布尔常量、布尔变量、关系表达式和逻辑表达式等)进行运算,结果也为布尔类型。表3-4列出了Java语言的逻辑运算符,逻辑运算规则如表3-5所示。运 算 符名 称例 子功 能!非!a对布尔数据a取非&非简洁与a&b对布尔数据a和b进行非简洁与运算|非简洁或a|b对布尔数据a和b进行非简洁或运算异或ab对布尔数据a和b进行异或运算&简洁与a&b对布尔数据a和b进行简洁与运算|简洁或a|b对布尔数据a和b进行简洁或运算表表3-4布尔运算符布尔运算符ab!aa&ba&ba|ba|babfalsefalsetruefalseflasefalsefalsetruetruefalsetruetruetru
7、efalsefalsefalsetruetruetruetruefalsetruetruefalse表表3-5逻辑运算真值表逻辑运算真值表n逻辑运算符:!(非),&(与),|(或)n逻辑运算符要求的操作数和结果值都是布尔型,即返回布尔类型的值true或false。n&短路运算:若&左边表达式的值为false,则不对运算符右边的表达式再进行运算,表达式的结果为false。n|的短路运算:若|左边的表达式的值为true,则不对运算符右边的表达式再进行运算,表达式的结果为true例:boolean x=false;(35)&(x=53)/表达式结果为false,x为false;boolean x=t
8、rue;(53)|(x=35)/表达式结果为true,x为true.n逻辑表达式n由逻辑运算符构成的表达式24 18&18 24n3.4 赋值运算符n赋值运算符都是二元运算符,具有右结合性。n1简单赋值运算符(=)n2复合赋值运算符 复合赋值运算符的右边是一个整体。表3-6中的表达式是等价的。运 算 符用 法等 价 于+=-=*=/=%=op1+=op2op1=op2op1*=op2op1/=op2op1%=op2op1=op1+op2op1=op1op2op1=op1*op2op1=op1/op2op1=op1%op2&=op1&=op2op1=op2op1=op2op1=op2op1=op
9、2op1=op1&op2op1=op1op2op1=op1op2op1=op1op2op1=op1op2表表3-6复合赋位运算符复合赋位运算符n3.5 位运算符n位运算符用来对二进制位进行运算,运算操作数应是整数类型,结果也是整数类型。表3-7列出了Java的位运算符。运 算 符实际操作例 子功 能按位取反a对a按二进制每位取反|与运算或运算异或运算左移算术右移逻辑右移aba|hababab对a和b按二进制位每位进行与运算对a和b按二进制位每位进行或运算对a和b按二进制位每位进行异或运算对a左移b位,低位用0填充对a右移b位,高位用原高位重复对a右移b位,高位用0填充表表3-7位运算符列表位运
10、算符列表abaa&ba|bab001000011011100011110110表表3-8位运算真值表位运算真值表nJava 用补码补码表示二进制数 X 补=符号位0+X X 0 X 补=000000 X=0 X 补=按位取反+1 X 0n1 的补码表示(4个字节)00000000 00000000 00000000 00000001n-1 的补码表示(4个字节)11111111 11111111 11111111 11111111(4)位运算符(续一)运算符示例含义&Op1&Op2使Op1和Op2按位相与|Op1|Op2使Op1和Op2按位相或Op对Op按位取反Op1 Op2使Op1和Op2按
11、位异或Op1 Op1 Op2使Op1右移Op2位(带符号,左边补补补补充充充充符号位符号位符号位符号位)Op1 Op2使Op1无符号右移Op2位(左边始终补补添添0)(4)位运算符(续二)n按位与运算(&)(全1得1,有0得0)n参与运算的两个值,如果两个相应位都为1,则该位的结果为1,否则为0。即:0&0=0,0&1=0,1&0=0,1&1=1 例:a:00000000 00000000 00000000 00000111&b:10000001 10100101 11110011 10101011 c:00000000 00000000 00000000 00000011(4)位运算符(续三
12、)n按位或运算(|)(有1得1,全0得0)参与运算的两个值,如果两个相应位都是0,则该位结果为0,否则为1。n即:0|0=0,0|1=1,1|0=1,1|1=1n例:若a=1;b=2;则a|b=3。n按位异或运算()(相异得1,相同得0)参与运算的两个值,如果两个相应位的某一个是1,另一个是0,那么按位异或()在该位的结果为1。也就是说如果两个相应位相同,输出位为0,否则为1。n即:00=0,01=1,10=1,11=0n例:若a=1;b=2;则ab=3。(4)位运算符(续四)n按位取反运算()属于一元运算符,它只对一个自变量进行操作。按位取反生成与输入位相反的值,若输入0,则输出1;输入1,
13、则输出0。即:0=1,1=0例:若a=4;则a=-5。n左移位运算符()运算符执行一个左移位。作左移位运算时,右边的空位补0。在不产生溢出的情况下,数据左移1位相当于乘以2。例:int a=64,b;b=a与)算术右移运算符执行一个右移位(带符号),左边按符号位补0或1。n例:int a=16,b;b=a2;/b=4逻辑右移运算符是0填充的右移,它执行的是不带符号的移位。n即对以补码表示的二进制数操作时,在带符号的右移中,右移后左边留下的空位中添入的是原数的符号位(正数为0,负数为1);在不带符号的右移中,右移后左边留下的空位中添入的一律是0。(4)位运算符(续六)n注意事项在移位运算中,ni
14、nt类型,实际移位数=第2个操作%32nlong类型,实际移位数=第2个操作%64n思考练习8 328 348 648L66位右移和左移程序 异或加密解密/结果是结果是8/结果是结果是2/结果是结果是8/结果是结果是2n3.6 条件运算符n条件运算符是一种三元运算符,它的格式如下:Operand?Expression1:Expression2n在这个式子中,先计算Operand的真假,若为真,则计算并返回Expression1,若为假,则计算并返回Expression2。例如;(ab)?a:b;n这个表达式将返回a和b中较大的那个数值。n3.7 字符串运算符n运算符“+”可以实现两个或多个字符
15、串的连接,也可实现字符串与其他类对象的连接,在连接时,其他类对象会被转换成字符串。另外,运算符“+=”把两个字符串连接的结果放进第一个字符串里。3.8 表 达 式 n表达式是由操作数和运算符按一定的语法形式组成的符号序列。n3.8.1 类型转换n在一个表达式中可能有不同类型的数据进行混合运算,这是允许的,但在运算时,Java将不同类型的数据转换成相同类型,再进行运算。n1自动类型转换类 型 1类 型 2转换后的类型byte或shortbyte或short或intbyte或short或int或longbyte或short或int或long或floatcharintlongfloatdoublei
16、ntintlongfloatDoubleint表表3-9不同类型数据之间的转换规则不同类型数据之间的转换规则n2强制类型转换源 类 型目标类型byteshortcharintlongfloatshort,char,int,long,float,doubleint,long,float,doubleint,long,float,doublelong,float,doublefloat,doubledouble表表3-10不会丢失信息的类型转换不会丢失信息的类型转换n3表达式求值中的自动类型提升nJava语言对表达式求值的自动类型提升规则如下。n 所有byte和short类型提升为int类型。n
17、若一个操作数是long类型,则整个表达式提升为long类型。n 若一个操作数是float类型,则整个表达式提升为float类型。n 若有double类型,则表达式值为double类型。n自动类型提升对数据的运算带来了方便,但也容易引起编译错误。n3.8.2 优先级优 先 次 序运 算 符1234567 ()+-!instanceofnew,(type)即强制类型转换*/%+=89101112131415=!=&按位与和非简洁与 按位或和非简洁或&?:=+=*=/=%=&=表表3-11运算符优先级运算符优先级3.9 语句和块n1语句n在Java语言中,有下面几类语句:空语句、标识语句、声明语句、
18、表达式语句、分支语句、循环语句、跳转语句、同步语句和异常语句等。有两种基本的语句:表达式语句和声明语句。(1)表达式语句n 赋值表达式,包含赋值运算符=或复合赋值运算符之一。n+或的前后缀形式。n 方法调用(无论它是否有返回值)。n 对象创建表达式,用new来创建一个对象的表达式。(2)声明语句 例如:int a;2块n用一对花括号“”将零个或多个语句括起来,就构成一个块(也称复合语句)。在块中允许包含另一个块(块嵌套)。在Java语言中,允许一个块出现在任何单一语句可以出现的地方。n块体现了Java面向对象程序设计的封装概念,在一个块中声明的局部变量的作用域是该变量的声明开始点到最小的包含其
19、声明的块结束。3.10 instanceof运算符nInstanceof是双目运算符,左面的操作元是一个对象,右面是一个类。当左面的对象是右面的类创建的对象时,该运算结果为true,否则为false。3.11 常用Java数值计算方法 n在Java的类Math中包含了一些数值常量,如E和PI,以及一些基本的数值计算方法,如指数、对数、平方根和三角函数等,为用户程序进行数值计算带来了方便。表3-12列出了一些常用的数值计算方法。方 法功 能参数类型返回类型abs(a)求a的绝对值(l)(1)sin(a)求a(弧度)的正弦值doubledoublecos(a)求a(弧度)的余弦值doubledou
20、bletan(a)求a(弧度)的正切值doubledoubleasin(a)求a的反正弦值doubledouble表表3-12类类Math中常用的数值计算方法中常用的数值计算方法方 法功 能参数类型返回类型acos(a)求a的反余弦值doubledoubleatan(a)求a的反正切值doubledoubleceil(a)求不小于a的最小整数doubledoublerint(a)求最接近a的整数doubledoubleexp(a)求e的a幂次doubledoublefloor(a)求不大于a的最大整数doubledoublepow(a,b)求a的b次方doubledoublerandom()产
21、生0.01.0的伪随机数doubledoublesqrt(a)求a的平方根doubledoublelog(a)求a的自然对数doubledoublemax(a,b)求a,b中的大者(l)(1)min(a,b)求a,b中的小者(l)(1)续表续表n分支结构又称为选择结构,是在两种或两种以上的多条执行路径中选择一条执行的控制结构,选择语句提供了一种控制机制,使得程序根据相应的条件去执行对应的语句。3.11 分支语句n(1)if-else语句 n单分支:if(condition)statement;控制流程:先对condition的值进行判断,若condition的值为true,则程序执行语句sta
22、tement,否则就转去执行if语句的后续语句。(1)if-else语句n双分支:if(condition)statement1;elsestatement2;n控制流程:先对condition的值进行判断,condition的值为true,则程序执行语句statement1,否则执行语句statement2。(1)if-else语句n多分支/if嵌套 if(condition1)statement1;else if(condition2)statement2;else if(condition3)statement3;.else statementN;n最近未匹配原则:即else总与离它最近
23、的尚未匹配的if相匹配。流程图结构流程图结构 n选择语句选择语句 语法格式语法格式1if(条件表达式条件表达式)语句或语句序列;语句或语句序列;条件表达式条件表达式语句序列语句序列truefalsen选择语句选择语句 语法格式语法格式2if(条件表达式条件表达式)语句或语句序列语句或语句序列1;else 语句或语句序列语句或语句序列2;条件表达式条件表达式语句序列语句序列2truefalse语句序列语句序列1n选择语句选择语句 语法格式语法格式3if(条件表达式条件表达式1)语句或语句序列语句或语句序列1;else if(条件表达式条件表达式2)语句或语句序列语句或语句序列2;else 语句或
24、语句序列语句或语句序列n;选择语句应用举例选择语句应用举例n例3-3(2)switch语句 nswitch语句的一般格式如下:switch(表达式)case:;break;case:;break;.case:;break;default:;break;switch注意事项nswitch表达式与case常量表达式的类型必须是整形或字符型的,不能是关系表达式和逻辑表达式。n使用switch语句时,需要注意的是:n 各个case后的常量值value应各不相同。n 通常在每一种case情况后都应使用break语句,否则,遇到第一个相等情况后,下面break前的所有语句都会被执行(包括default后面
25、的语句,若有的话)。n 各个分支的statement可以是一条或多条语句,不必使用复合语句。n 不同case后的语句statement相同时,可以合并多个case子句。n switch语句在用表达式的值比较每一个case后的值value时,是从前往后顺序进行的。若各个值value互不相同,则case子句的顺序可任意。Switch语句例题n例3-4n一个循环一般包括4个部分:n 初始化部分,用来设置循环的一些初始条件,如累加器清零等;n 循环体部分,重复执行的一段程序,可以是一条语句,也可以是一块语句;n 循环条件变更部分,在本次循环结束,下一次循环开始前执行的语句。常用形式为一个计数器值的增减
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- java 运算 表达式 语句
限制150内