您好,欢迎访问三七文档
当前位置:首页 > IT计算机/网络 > 数据库 > Java 2实用教程课件(第3版第3章)
Java2实用教程(第3版)教学课件►配合例子代码一同使用例子代码可登录下载第3章运算符、表达式和语句3.1运算符与表达式3.2语句概述3.3控制语句3.4循环语句3.5跳转语句3.1运算符与表达式Java提供了丰富的运算符,如算术运算符、关系运算符符、逻辑运算符、位运算符等。本节将介绍大部分运算符。1.算术运算符与表达式用算术符号和括号连接起来的符合java语法规则的式子,称为算术表达式,如x+2*y-30+3*(y+5)。加减运算符:+,-,加减运算符的结合方向是从左到右。,加减运算符的优先级是4级。乘,除和求余运算符:*,/,%,运算符的结合方向是从左到右.乘除运算符的操作元是整型或浮点型数据。*,/,%运算符的优先级是3级。算术混合运算的精度精度从“底”到“高”排列的顺序是:byteshortintlongfloatdoubleJava将按运算符两边的操作元的最高精度保留结果的精度,例如:5/2的结果是2,要想得到2.5,必须写成5.0/2或5.0f/2。运算符用法含义结合性二元运算符+op1+op2加法左-op1-op2减法左*op1*op2乘法左/op1/op2除法左%op1%op2模运算(求余)左一元运算符++op1正数右--op1负数右++++op1,op1++自增右,左----op1,op1++自减右,左算数运算符2.自增,自减运算符:++,--自增、自减运算符是单目运算符,可以放在操作元之前,也可以放在操作元之后。操作元必须是一个整型或浮点型变量。作用是使变量的值增1或减1.++x(--x)表示在使用x之前,先使x的值加(减)1。x++(x--)表示在使用x之后,使x的值加(减)1。算数运算符的特点对于二元运算符,运算结果的数据类型一般为两个操作数中表达范围较大的类型。例如,一个整数和浮点数运算的结果为浮点数。对于一元运算符,运算结果的类型与操作数的类型相同。自增、自减运算符有前缀和后缀两种形式,当是前缀形式(即++、--符号出现在变量的左侧)时,对变量实施的运算是“先运算后使用”;当是后缀形式(即++、--符号出现在变量的右侧)时,对变量实施的运算是“先使用后运算”。算数运算符的注意事项在Java中,%(求模运算符)的操作数可为浮点数,如52.3%10=2.3;Java对+运算进行了扩展,可作字符串连接运算符,如ab+efd得abefd;做+运算时,如果一个操作数是字符串,其它操作数自动转换成字符串.如:Strings;s=s:+4*5;结果是s=s:20;byte,short,char等类型进行混合运算时,会先自动转换为int类型再运算。3.算术混合运算的精度精度从“底”到“高”排列的顺序是:byteshortintlongfloatdoubleJava将按运算符两边的操作元的最高精度保留结果的精度,例如:5/2的结果是2,要想得到2.5,必须写成5.0/2或5.0f/2。char型数据和整型数据运算结果的精度是int。例如:bytex=7;那么‘B’+x;的结果是int型,因此下列写法是不正确的,charch=’B’+x;应当写成:charch=(char)(’B’+x);4.关系运算符与关系表达式关系运算符:,,=,=,!=系运算符用来比较两个值的关系。关系运算符的运算结果是boolean型,当运算符对应的关系成立时,运算结果是true,否则是false。结果为数值型的变量或表达式可以通过关系运算符形成关系表达式。如,48,(x+y)80。关系运算符运算符示例含义==Op1==Op2比较两个数据是否相等!=Op1!=Op2比较两个数据是否不等Op1Op2比较一个是否小于另一个Op1Op2比较一个是否大于另一个=Op1=Op2比较一个是否小于等于另一个=Op1=Op2比较一个是否大于等于另一个关系运算符使用注意事项注意“==”不要写成“=”Java中,任何类型的数据(包括简单类型和复合类型),都可以通过==或!=来比较是否相等。关系运算的结果是true和false,而不是1或0。关系运算符的结果是布尔值,关系运算符的优先级要高于布尔运算符。5.逻辑运算符与逻辑表达式逻辑运算符包括:&&,||,!。其中&&、||为双目运算符,实现逻辑与、逻辑或;!为单目运算符,实现逻辑非。逻辑运算符的操作元必须是boolean型数据,逻辑运算符可以用来连接关系表达式。例如,28&&92的结果为false,28||92的结果为true。逻辑运算符逻辑运算只能处理布尔类型的数据,所得结果也是布尔值逻辑运算符支持短路运算运算符示例含义结合性&&Op1&&Op2逻辑与运算左||Op1||Op2逻辑或运算左!!Op逻辑非运算右逻辑运算符支持短路运算所谓短路计算,就是:从左向右依次计算每个条件是否成立,如果在前面的计算中,已经可以得出整个复合条件表达式的计算结果,则后面的条件就不计算了。例如inti=5,对于表达式(i8)&&(i4)的计算:在这个表达式中,当i8时计算结果为false,不论后面条件的结果如何,整个复合条件的计算结果都为false,则后面的条件就无需计算了。位运算符:&,|,^运算符可以用于布尔逻辑运算。但是它们不支持短路运算。运算规则如下:&与&&相同;|与||相同;^,当两个布尔值相同时,运算结果为false,不同时为true。6.赋值运算符与赋值表达式赋值运算符:=。赋值运算符是双目运算符,左面的操作元必须是变量,不能是常量或表达式。设x是一个整型变量,y是一个boolean型变量,x=20和y=true都是正确的赋值表达式,赋值运算符的优先级较低,是14级,结合方向右到左。赋值表达式的值就是“=”左面变量的值。注意不要将赋值运算符“=”与等号运算符“==”混淆。赋值运算符j=i+20;运算符示例含义+=count+=2count=count+2-=count-=2count=count-2*=count*=2count=count*2/=count/=2count=count/2%=count%=2count=count%2例:Test.javapublicclassTest{publicstaticvoidmain(String[]args){inti=29;intj=3;floata=23.5f;doubleb=4.0;System.out.println(i+a=+(i+a));System.out.println(i*j=+(i*j));System.out.println(i/j=+(i/j));//运算结果为整数System.out.println(i%j=+(i%j));//求余数System.out.println(a*b=+(a*b));System.out.println(a/b=+(a/b));//运算结果为浮点数System.out.println(a%b=+(a%b));//结果为浮点数System.out.println(i++=+(i++));//先使用,后自增System.out.println(++i=+(++i));//先自增,后使用}}7.三目条件运算符(?:)在Java语言中,三目条件运算符(?:)与C语言中的使用规则是完全一致的,使用的形式是:x?y:z;上面的三目条件运算的规则是:先计算表达式x的值,若x为真,则整个三目运算的结果是表达式y的值;若x为假,则整个三目运算的结果是表达式z的值。下面的例子实现了从两个数中找出较大的数的功能。inta=3,b=4;intmax=ab?a:b;max的值为4。8.位运算符“&”是双目运算符,对两个整型数据a,b按位进行运算,运算结果是一个整型数据c。运算法则是:如果a,b两个数据对应位都是1,则c的该位是1,否则是0。即:0&0=0,0&1=0,1&0=0,1&1=1“|”是双目运算符。对两个整型数据a,b按位进行运算,运算结果是一个整型数据c。运算法则是:如果a,b两个数据对应位都是0,则c的该位是0,否则是1。即:0|0=0,0|1=1,1|0=1,1|1=1“~”是单目运算符。对一个整型数据a按位进行运算,运算结果是一个整型数据c。运算法则是:如果a对应位都是0,则c的该位是1,否则是1。即:~0=1,~1=0“^”是双目运算符。对两个整型数据a,b按位进行运算,运算结果是一个整型数据c。运算法则是:如果a,b两个数据对应位相同,则c的该位是0,否则是1。即:0^0=0,0^1=1,1^0=1,1^1=0位运算符5.左移位运算符()运算符执行一个左移位。作左移位运算时,右边的空位补0。在不产生溢出的情况下,数据左移1位相当于乘以2。例如:inta=64,b;b=a1;//b=1286.右移位运算符(与)运算符执行一个右移位(带符号),左边按符号位补0或1例如:inta=16,b;b=a2;//b=47.运算符同样是执行一个右移位,只是它执行的是不带符号的移位。也就是说对以补码表示的二进制数操作时,在带符号的右移中,右移后左边留下的空位中添入的是原数的符号位(正数为0,负数为1);在不带符号的右移中,右移后左边留下的空位中添入的一律是0。位运算符运算符示例含义&Op1&Op2使Op1和Op2按位相与|Op1|Op2使Op1和Op2按位相或~~Op对Op按位取反^Op1^Op2使Op1和Op2按位异或Op1Op2使Op1左移Op2位,右补0Op1Op2使Op1右移Op2位(带符号,左边补充符号位)Op1Op2使Op1无符号右移Op2位(左边始终补添0)注意事项除~为右结合外,其余为左结合。操作数的类型一般为整型或字符型。&,|,^三个运算符可以用于boolean运算。右移是用符号位来填充右移后留下的空位,是用零来填充空位.若两个数据的长度不同,如a&b,a为byte型,b为int型,系统首先会将a的左侧24位填满,若a为正,则填满0,若a为负,填满1即进行“符号扩充”。举例:按位与运算符&&十进制数二进制数操作数1500000000000000000000000000000101操作数2900000000000000000000000000001001运算结果1000000000000000000000000000000015&9例子1(效果如图3.1)classExample3_1{publicstaticvoidmain(Stringargs[]){chara1='十',a2='点',a3='进',a4='攻';charsecret='8';a1=(char)(a1^secret);a2=(char)(a2^secret);a3=(char)(a3^secret);a4=(char)(a4^secret);System.out.println(密文:+a1+a2+a3+a4);a1=(char)(a1^secret);a2=(char)(a2^secret);a3=(char)(a3^secret);a4=(char)(a4^secret);System.out.println(原文:+a1+a2+a3+a4);}}8.instanceof运算符该运算符是双目运算符,左面的操作元是一个对象;右面是一个类。当左面的对象是右面的类创建的对象时,该运算符运算的结果是true,否则是false。9.运算符综述Java的表达式就是用运算符连接起来的符合Java规则的式子。运算符的优先级决定了表达式中运算执行的先后顺序。例如,xy&&!z相当于(xy)&&(!z),没有必要去记忆运算符号的优先级别,在编写程序时可尽量的使用括号()运算符号来实现你想要的运算次序,以免产生难以阅读或含糊不清的计算顺序。运算符的结合性决定了并列相同级别的运算符的先后顺序,例如,加减
本文标题:Java 2实用教程课件(第3版第3章)
链接地址:https://www.777doc.com/doc-5034894 .html