Java2实用教程课件(第3版第3章).ppt
第章运算符、表达式和语句第章运算符、表达式和语句n3.1 运算符与表达式运算符与表达式n3.2 语句概述语句概述n3.3 控制语句控制语句n3.4 循环语句循环语句n3.5 break和和continue语句语句 3.1 运算符与表达式运算符与表达式nJava 提供了丰富的运算符,如算术运算符、提供了丰富的运算符,如算术运算符、关系运算符符、逻辑运算符、位运算符等。关系运算符符、逻辑运算符、位运算符等。算术运算符算术运算符:+,*,/,%,+,关系运算符关系运算符:,=,赋值运算符赋值运算符:=扩展赋值运算符扩展赋值运算符:+=,=,*=,/=字符串连接运算符字符串连接运算符:+造型操作符:造型操作符:()1 算术运算符与表达式算术运算符与表达式 n用算术符号和括号连接起来的符合用算术符号和括号连接起来的符合java语法规则语法规则的式子,称为算术表达式,如的式子,称为算术表达式,如x+2*y-30+3*(y+5)。n加减运算符:加减运算符:+,-n乘,除和求余运算符:乘,除和求余运算符:*,/,%n算术混合运算的精度算术混合运算的精度精度从精度从“底底”到到“高高”排列的顺序是:排列的顺序是:byte short int long float doubleJava将按运算符两边的操作元的最高精度保将按运算符两边的操作元的最高精度保留结果的精度。留结果的精度。作为字符串连接符的作为字符串连接符的“+”n运算符运算符“+”除了用于数值类型的加法运算法,在除了用于数值类型的加法运算法,在字符串类型(字符串类型(String)数据中,它还是一个用于)数据中,它还是一个用于连接字符串的特殊的运算符。连接字符串的特殊的运算符。n当当“+”用在表达式中的时候,如果其中有一个操用在表达式中的时候,如果其中有一个操作数是字符串类型(作数是字符串类型(String),则),则Java会自动将会自动将另一个操作数也转换成字符串,然后将这两个字另一个操作数也转换成字符串,然后将这两个字符串相连起来生成一个新的字符串。符串相连起来生成一个新的字符串。自增,自减运算符:自增,自减运算符:+,-n自增、自减运算符是单目运算符,可以放在操自增、自减运算符是单目运算符,可以放在操作元之前,也可以放在操作元之后。操作元必作元之前,也可以放在操作元之后。操作元必须是一个整型或浮点型变量。作用是使变量的须是一个整型或浮点型变量。作用是使变量的值增值增1或减或减1n+x(-x)表示在使用)表示在使用x之前,先使之前,先使x的值加的值加(减)(减)1。nx+(x-)表示在使用)表示在使用x之后,使之后,使x的值加(减)的值加(减)1。3算术混合运算的精度算术混合运算的精度 精度从精度从“底底”到到“高高”排列的顺序是:排列的顺序是:byte short int long float doublechar型数据和整型数据运算结果的精度是型数据和整型数据运算结果的精度是int。例如:。例如:byte x=7;那么那么B+x;的结果是的结果是int型,因此下列写法是不正确的,型,因此下列写法是不正确的,char ch=B+x;应当写成:应当写成:char ch=(char)(B+x);4关系运算符与关系表达式关系运算符与关系表达式n关系运算符:关系运算符:,=,8,(x+y)80。逻辑运算符与逻辑表达式逻辑运算符与逻辑表达式 n逻辑运算符包括:逻辑运算符包括:&,|,!。其中。其中&、|为双为双目运算符,实现逻辑与、逻辑或;!为单目运目运算符,实现逻辑与、逻辑或;!为单目运算符,实现逻辑非。逻辑运算符的操作元必须算符,实现逻辑非。逻辑运算符的操作元必须是是boolean型数据型数据,逻辑运算符可以用来连接,逻辑运算符可以用来连接关系表达式。例如,关系表达式。例如,28&92的结果为的结果为false,28|92的结果为的结果为true。6赋值运算符与赋值表达式赋值运算符与赋值表达式n赋值运算符:赋值运算符:=。n赋值运算符是双目运算符,左面的操作元必须赋值运算符是双目运算符,左面的操作元必须是变量,不能是常量或表达式。设是变量,不能是常量或表达式。设x是一个整是一个整型变量,型变量,y是一个是一个boolean型变量,型变量,x=20和和y=true都是正确的赋值表达式,赋值运算符的优都是正确的赋值表达式,赋值运算符的优先级较低,是先级较低,是14级,结合方向右到左。赋值表级,结合方向右到左。赋值表达式的值就是达式的值就是“=”左面变量的值。注意不要左面变量的值。注意不要将赋值运算符将赋值运算符“=”与等号运算符与等号运算符“=”混淆。混淆。n可以将其它的运算符和赋值运算符结合起来,可以将其它的运算符和赋值运算符结合起来,作为作为“扩展扩展”的赋值运算符:的赋值运算符:+=,-=,*=,/=,%=,=,&=,|=,=,=n当一个表达式中含有不同类型的数据时,需要当一个表达式中含有不同类型的数据时,需要用到类型转换。用到类型转换。n类型转换存在两种不同的方式:类型转换存在两种不同的方式:q隐式转换隐式转换q强制转换强制转换7位运算符位运算符n按位与按位与 一个房间里有两个开关控制房间的灯的明暗。一个房间里有两个开关控制房间的灯的明暗。当两个开关同时处于打开状态时,灯才能亮。当两个开关同时处于打开状态时,灯才能亮。开关开关1 开关开关2 灯的状态灯的状态 关关 关关 暗暗 开开 关关 暗暗 关关 开开 暗暗 开开 开开 亮亮位运算符位运算符n按位与按位与 01101101 00110111 00100101结论:按位与,只有壹结论:按位与,只有壹(1)壹壹(1)为为1。&位运算符位运算符n按位或按位或 一个房间里有两个开关控制房间的灯的明暗。一个房间里有两个开关控制房间的灯的明暗。当任何一个开关处于打开状态时,灯就能亮。当任何一个开关处于打开状态时,灯就能亮。开关开关1 开关开关2 灯的状态灯的状态 关关 关关 暗暗 开开 关关 亮亮 关关 开开 亮亮 开开 开开 亮亮位运算符位运算符n按位或按位或 01101101 00110111 01111111结论:按位或,只有零结论:按位或,只有零(0)零零(0)为为0。|位运算符位运算符n按位异或按位异或 一个房间里有两个开关控制房间的灯的明暗。一个房间里有两个开关控制房间的灯的明暗。当两个开关处于不同状态时,灯就能亮。当两个开关处于不同状态时,灯就能亮。开关开关1 开关开关2 灯的状态灯的状态 关关 关关 暗暗 开开 关关 亮亮 关关 开开 亮亮 开开 开开 暗暗位运算符位运算符n按位异或按位异或 01101101 00110111 01011010 结论:按位异或,只有零结论:按位异或,只有零(0)壹壹(1)或壹或壹(1)零零(0)为为1。位运算符位运算符n按位取反按位取反 01101101 10010010 结论:对二进制数按位取反,即结论:对二进制数按位取反,即0变成变成1,1变变成成0。移位运算符移位运算符nJava中有三个移位运算符中有三个移位运算符左移:左移:无符号右移:无符号右移:移位运算符移位运算符数 x x2 x217 00010001 00 01000100 00000100 01 00000100 01-17 11101111 11 10111100数 x x2 x217 00010001 00 01000100 00000100 01 00000100 01-17 11101111 11 10111100 11111011 11 00111011 11移位运算符移位运算符例子例子1(效果如图3.1)class Example3_1 public static void main(String args)char a1=十十,a2=点点,a3=进进,a4=攻攻;char secret=8;a1=(char)(a1secret);a2=(char)(a2secret);a3=(char)(a3secret);a4=(char)(a4secret);(密文密文:+a1+a2+a3+a4);a1=(char)(a1secret);a2=(char)(a2secret);a3=(char)(a3secret);a4=(char)(a4secret);(原文原文:+a1+a2+a3+a4);8instanceof 运算符运算符n 该运算符是双目运算符,左面的操作元是一该运算符是双目运算符,左面的操作元是一个对象;右面是一个类。当左面的对象是右面个对象;右面是一个类。当左面的对象是右面的类创建的对象时,该运算符运算的结果是的类创建的对象时,该运算符运算的结果是true,否则是,否则是false。表达式表达式n表达式是运算符和操作数的结合,它是任何一门表达式是运算符和操作数的结合,它是任何一门编程语言的关键组成部分编程语言的关键组成部分n表达式允许程序员进行数学计算、值的比较、逻表达式允许程序员进行数学计算、值的比较、逻辑操作以及在辑操作以及在Java中进行对象的操作。中进行对象的操作。n一些表达式的例子:一些表达式的例子:qXqX+10qY=x+10qArr10qstudent.geName()表达式中运算符的结合性表达式中运算符的结合性n所有的数学运算都认为是从左到右结合的,在所有的数学运算都认为是从左到右结合的,在Java中,大部分运算也是从左到右结合的,只有中,大部分运算也是从左到右结合的,只有单目运算符、赋值运算符和条件运算符例外单目运算符、赋值运算符和条件运算符例外n乘法和加法是两个可结合的运算,也就是说,这乘法和加法是两个可结合的运算,也就是说,这两个运算符左右两边的操作符可以互换位置而不两个运算符左右两边的操作符可以互换位置而不会影响到结果会影响到结果表达式中运算符的优先顺序表达式中运算符的优先顺序n下面的表格说明了各个运算符的优先顺序,优下面的表格说明了各个运算符的优先顺序,优先级高的运算符放置在表的上部,而在同一行先级高的运算符放置在表的上部,而在同一行的运算符拥有同样的优先顺序。的运算符拥有同样的优先顺序。n除了单目运算符、赋值运算符以及条件运算符,除了单目运算符、赋值运算符以及条件运算符,其它的运算符都是从左到右结合的。其它的运算符都是从左到右结合的。运算符优先级运算符优先级运算符说明Java运算符分割符.(),;单目运算符+-!+expr-expr创建或类型转换New(type)expr乘法除法*/%加法减法+-移位 关系=instanceof运算符优先级(运算符优先级(con.)运算符说明Java运算符等价=!=按位与&按位异或按位或|条件与&条件或|条件?:赋值=3.2 语句概述语句概述nJava里的语句可分为以下五类:里的语句可分为以下五类:n1方法调用语句方法调用语句n2表达式语句表达式语句 n3复合语句复合语句n4控制语句控制语句n5package 语句和语句和 import语句语句3.3 控制语句控制语句 nJava 语言的控制语句有语言的控制语句有2种类型,即条件语句,种类型,即条件语句,和和switch开关语句。开关语句。1条件控制语句条件控制语句nif 语句的一般形式:语句的一般形式:if(表达式表达式)若干语句若干语句 例例3.3nif-else 语句的一般形式:语句的一般形式:if(表达式表达式)若干语句若干语句 else 若干语句若干语句 例例3.4public class IfTestpublic static void main(String args)int i;i=Integer.parseInt(args0);if(i50)else if(i=50)else 2 switch开关语句开关语句 nswitch 语句是多分支的开关语句,它的一般格式定义如下(其中语句是多分支的开关语句,它的一般格式定义如下(其中break语句是可语句是可选的):选的):switch(表达式表达式)case 常量值常量值1:若干个语句若干个语句 break;case 常量值常量值2:若干个语句若干个语句 break;.case 常量值常量值n:若干个语句若干个语句 break;default:若干语句若干语句例例3.53.4 循环语句循环语句n1for循环语句循环语句nfor 语句是语句是java程序设计中最有用的循环语句程序设计中最有用的循环语句之一,之一,for语句的格式如下:语句的格式如下:for(表达式表达式1;表达式;表达式2;表达式;表达式3)若干语句若干语句 例例3.6n2while 循环循环一般格式:一般格式:while(表达式表达式)若干语句若干语句 n3do-while循环循环一般格式:一般格式:do 若干语句若干语句 while(表达式表达式);例例3.73.5 break和和continue语句语句n使用使用break语句可以终止语句可以终止switch语句或者循环语句或者循环语句的执行语句的执行ncontinue语句用来略过循环中剩下的语句,重语句用来略过循环中剩下的语句,重新开始新的循环,这和新开始新的循环,这和break语句的完全跳出语句的完全跳出循环是不一样的。循环是不一样的。ncontinue 仅仅出现在仅仅出现在while/do/for语句的子语语句的子语句块中。句块中。例例3.8