已阅读5页,还剩108页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第三章Java实用技术,运算符、表达式与语句,运算符的作用是与一定的运算数据组成表达式来完成相应的运算。对不同的数据类型,有着不同的运算符。对运算符,有运算对象(操作数)个数及类型、运算优先级、结合性等特性。Java语言对运算符的优先级、结合性和求值顺序有明确的规定,从根本上消除了运算符运算过程的二义性以及结果不统一的弊端。,运算符的优先级是指不同运算符在混合运算中执行的先后顺序。在Java语言中共有17种优先级,每个运算符分属确定的一个优先级别。Java语言严格按照运算符的优先级由高到低地顺序执行各种运算。运算符的结合性确定同级运算符的运算顺序。左结合性规定,运算数据先与左边的运算符结合,然后与右边的运算符结合。右结合性正好相反。,3.1算术运算符算术运算符按操作数的多少可分为一元(或称单目)和二元(或称双目)两类,一元运算符一次对一个操作数进行操作,二元运算符一次对两个操作数进行操作。算术运算符的操作数类型是数值类型。1一元算术运算符,表3-1一元算术运算符,前置运算:+、-位于操作数前,如+x;-x;对前置运算变量先操作后引用后置运算:+、-位于操作数后,如x+;x-;对后果置运算变量先引用后操作inta=10,b;b=a+;/a=11,b=10intx=10,y;y=-x;/x=9,y=9,2二元算术运算符算术运算符的第二种类型是二元运算符,这种运算符并不改变操作数的值,而是返回一个必须赋给变量的值。表3-2列出了二元算术运算符。二元算术运算符具有左结合性。,表3-2二元算术运算符,双目运算符+、-、*、/,如两个操作数都是整型,则结果是整型;否则是实型。5/2结果是2而不是2.5。%运算符可用于求整数或实数除的余数。例:inta=7;intb=2;a/b=3/整除a%b=1/取余注意:算术运算符的总体原则是先乘除、再加减,括号优先。整数除法会直接去掉小数,而不是进位。对取模运算符%来说,其操作数可以为浮点数。如:37.2%10=7.2。Java对加运算符进行了扩展,使它能够进行字符串的连接,如“Hello+“World,得到串“HelloWorld“.,3.算术表达式用算术符号和操作元连接起来的符合java语法规则的式子,称为算术表达式。例如:x+2*y-30+3*(y+5)-12+(-n)算术混合运算的精度按表达式中精度最高的计算char+int=int,charch=(char)(H+k);,3.2关系运算符关系运算符用于确定一个数据与另一个数据之间的关系,即进行关系运算。所谓关系运算是比较运算,将两个值进行比较。关系运算的结果值为true或false(布尔型)。表3-3列出了Java语言提供的6种关系运算符,它们都是双目运算符。在这里要指出的是,等于运算符=不要与赋值运算符=混淆,以至于关系运算变成了赋值运算。,表3-3关系运算符,关系表达式通过关系运算符形成的表达式例如:2418,(x+y+z)30+x,3.3逻辑运算符逻辑运算符可以对布尔类型的数据(布尔常量、布尔变量、关系表达式和逻辑表达式等)进行运算,结果也为布尔类型。表3-4列出了Java语言的逻辑运算符,逻辑运算规则如表3-5所示。,表3-4布尔运算符,表3-5逻辑运算真值表,逻辑运算符:!(非),(53)|(x=35)/表达式结果为true,x为true.,逻辑表达式由逻辑运算符构成的表达式2418b=2;则a|b=3。按位异或运算()(相异得1,相同得0)参与运算的两个值,如果两个相应位的某一个是1,另一个是0,那么按位异或()在该位的结果为1。也就是说如果两个相应位相同,输出位为0,否则为1。即:00=0,01=1,10=1,11=0例:若a=1;b=2;则ab=3。,(4)位运算符(续四),按位取反运算()属于一元运算符,它只对一个自变量进行操作。按位取反生成与输入位相反的值,若输入0,则输出1;输入1,则输出0。即:0=1,1=0例:若a=4;则a=-5。左移位运算符()运算符执行一个左移位。作左移位运算时,右边的空位补0。在不产生溢出的情况下,数据左移1位相当于乘以2。例:inta=64,b;b=a与)算术右移运算符执行一个右移位(带符号),左边按符号位补0或1。例:inta=16,b;b=a2;/b=4逻辑右移运算符是0填充的右移,它执行的是不带符号的移位。即对以补码表示的二进制数操作时,在带符号的右移中,右移后左边留下的空位中添入的是原数的符号位(正数为0,负数为1);在不带符号的右移中,右移后左边留下的空位中添入的一律是0。,(4)位运算符(续六),注意事项在移位运算中,int类型,实际移位数=第2个操作%32long类型,实际移位数=第2个操作%64思考练习8328348648L66位右移和左移程序异或加密解密,/结果是8/结果是2/结果是8/结果是2,3.6条件运算符条件运算符是一种三元运算符,它的格式如下:Operand?Expression1:Expression2在这个式子中,先计算Operand的真假,若为真,则计算并返回Expression1,若为假,则计算并返回Expression2。例如;(ab)?a:b;这个表达式将返回a和b中较大的那个数值。,3.7字符串运算符运算符“+”可以实现两个或多个字符串的连接,也可实现字符串与其他类对象的连接,在连接时,其他类对象会被转换成字符串。另外,运算符“+=”把两个字符串连接的结果放进第一个字符串里。,3.8表达式,表达式是由操作数和运算符按一定的语法形式组成的符号序列。3.8.1类型转换在一个表达式中可能有不同类型的数据进行混合运算,这是允许的,但在运算时,Java将不同类型的数据转换成相同类型,再进行运算。,1自动类型转换,表3-9不同类型数据之间的转换规则,2强制类型转换,表3-10不会丢失信息的类型转换,3表达式求值中的自动类型提升Java语言对表达式求值的自动类型提升规则如下。所有byte和short类型提升为int类型。若一个操作数是long类型,则整个表达式提升为long类型。若一个操作数是float类型,则整个表达式提升为float类型。若有double类型,则表达式值为double类型。自动类型提升对数据的运算带来了方便,但也容易引起编译错误。,3.8.2优先级,表3-11运算符优先级,3.9语句和块,1语句在Java语言中,有下面几类语句:空语句、标识语句、声明语句、表达式语句、分支语句、循环语句、跳转语句、同步语句和异常语句等。有两种基本的语句:表达式语句和声明语句。,(1)表达式语句赋值表达式,包含赋值运算符=或复合赋值运算符之一。+或的前后缀形式。方法调用(无论它是否有返回值)。对象创建表达式,用new来创建一个对象的表达式。(2)声明语句例如:inta;,2块用一对花括号“”将零个或多个语句括起来,就构成一个块(也称复合语句)。在块中允许包含另一个块(块嵌套)。在Java语言中,允许一个块出现在任何单一语句可以出现的地方。块体现了Java面向对象程序设计的封装概念,在一个块中声明的局部变量的作用域是该变量的声明开始点到最小的包含其声明的块结束。,3.10instanceof运算符,Instanceof是双目运算符,左面的操作元是一个对象,右面是一个类。当左面的对象是右面的类创建的对象时,该运算结果为true,否则为false。,3.11常用Java数值计算方法,在Java的类Math中包含了一些数值常量,如E和PI,以及一些基本的数值计算方法,如指数、对数、平方根和三角函数等,为用户程序进行数值计算带来了方便。表3-12列出了一些常用的数值计算方法。,表3-12类Math中常用的数值计算方法,续表,分支结构又称为选择结构,是在两种或两种以上的多条执行路径中选择一条执行的控制结构,选择语句提供了一种控制机制,使得程序根据相应的条件去执行对应的语句。,3.11分支语句,(1)if-else语句单分支:if(condition)statement;控制流程:先对condition的值进行判断,若condition的值为true,则程序执行语句statement,否则就转去执行if语句的后续语句。,(1)if-else语句,双分支:if(condition)statement1;elsestatement2;控制流程:先对condition的值进行判断,condition的值为true,则程序执行语句statement1,否则执行语句statement2。,(1)if-else语句,多分支/if嵌套if(condition1)statement1;elseif(condition2)statement2;elseif(condition3)statement3;.elsestatementN;最近未匹配原则:即else总与离它最近的尚未匹配的if相匹配。,流程图结构,选择语句,语法格式1if(条件表达式)语句或语句序列;,false,选择语句,语法格式2if(条件表达式)语句或语句序列1;else语句或语句序列2;,选择语句,语法格式3if(条件表达式1)语句或语句序列1;elseif(条件表达式2)语句或语句序列2;else语句或语句序列n;,选择语句应用举例,例3-3,(2)switch语句,switch语句的一般格式如下:switch(表达式)case:;break;case:;break;.case:;break;default:;break;,switch注意事项,switch表达式与case常量表达式的类型必须是整形或字符型的,不能是关系表达式和逻辑表达式。使用switch语句时,需要注意的是:各个case后的常量值value应各不相同。通常在每一种case情况后都应使用break语句,否则,遇到第一个相等情况后,下面break前的所有语句都会被执行(包括default后面的语句,若有的话)。各个分支的statement可以是一条或多条语句,不必使用复合语句。不同case后的语句statement相同时,可以合并多个case子句。switch语句在用表达式的值比较每一个case后的值value时,是从前往后顺序进行的。若各个值value互不相同,则case子句的顺序可任意。,Switch语句例题,例3-4,一个循环一般包括4个部分:初始化部分,用来设置循环的一些初始条件,如累加器清零等;循环体部分,重复执行的一段程序,可以是一条语句,也可以是一块语句;循环条件变更部分,在本次循环结束,下一次循环开始前执行的语句。常用形式为一个计数器值的增减;终止部分,一般为布尔表达式,每一次循环都要对该表达式求值,以检查是否满足循环终止条件。,3.12循环语句,(1)while语句(当型循环)while(条件表达式)循环体语句;控制流程:先判断条件表达式的值,当条件表达式的值为true,则执行循环体,然后再判断条件,直到条件表达式的值为false,停止执行语句。注:while语句的循环体可能一次也不会执行;while语句可能陷入“死循环”。,(2)do-while语句(直到型循环),do循环体语句;while(条件表达式);控制流程:先执行一次循环体中的语句,然后测试布尔表达式的值,如果布尔表达式的值为真,那就继续执行循环体,do-while语句将不断地测试布尔表达式的值并执行循环体中的内容,直到布尔表达式的值为假为止。注:do-while语句的循环体至少执行一次。另外do-while语句是可以与while语句互换的。,循环语句,while语法格式while(条件表达式)语句序列,do-while语法格式do语句序列while(条件表达式);,While循环例题,例3-5,(3)for语句,for(表达式1;表达式2;表达式3)statements;说明:表达式1是初始条件,是为循环变量置初值,它在循环开始的时候执行一次。表达式2是终止条件,决定循环是否继续,该条件表达式在每次循环的时候均作判断,若结果为false,则循环结束;表达式3是增量,用来修改循环变量,控制变量每循环一次后按什么方式变化。,(3)for语句,for语句中循环控制变量必须是有序类型,常用的有整型、字符型、布尔型。循环控制变量初值和终值通常是与控制变量类型相一致的一个常量,也可以是表达式。循环次数由初值和终值决定。for语句的执行过程如下:按表达式1将初值赋给循环控制变量。按表达式2判断控制变量的值是否越过终值,未越过终值则转,越过终值则转步骤。执行循环体。按表达式3修改控制变量。返回。结束循环。,4循环嵌套循环嵌套是指在某个循环语句的循环体中又包含另一个循环语句,也称多重循环。外面的循环语句称为“外层循环”,外层循环的循环体中的循环称为“内层循环”。,循环语句,for语法格式for(表达式1;表达式2;表达式3)语句序列,for语句应用举例,例3-6,3.13跳转语句,Java提供了break、continue和return三个跳转语句。1break语句break语句常用于提前从循环退出或跳过switch结构的其余部分。break;此时,break语句的功能是终止break所在的循环,转去执行其后的第一条语句,其特点:一是在有多重循环时,它只能使循环从本层的循环跳出来;二是此时程序一定转移到本层循环的下一个语句。用break语句终止swtich语句,控制流程会马上转到switch语句下方的语句。,2continue语句,continue语句在while、for或do/while结构中执行时跳过该结构体的其余语句,进入下一轮循环。continue;用于跳过当前的for、while或者do-while循环,即跳过循环体中continue语句后面的语句,回到循环体的条件测试部分继续执行。只能跳过本次循环的剩余语句。,3、Return语句,return语句用来明确地从一个方法返回,如果使用return语句返回一个值,其格式如下:return表达式;,classTestpublicstaticvoidmain(Stringargs)booleant=true;System.out.println(Beforethereturn.);if(t)return;System.out.println(Thiswontexecute.);,跳转语句例题,例3-7例3-8,谢谢!,条件选择语句,if语句if语句是一个条件表达式,若条件表达式为真,则执行下面的代码块,否则跳过该代码块单行代码if(布尔表达式)语句;多行代码if(布尔表达式);语句;,条件选择语句,示例importjava.io.IOException;publicclasstest3publicstaticvoidmain(Stringargs)throwsIOExceptionSystem.out.println(你喜欢javaa);charlike=(char)System.in.read();if(like=Y|like=y)System.out.println(good);,条件选择语句,if-else语句根据判定条件的真假执行不同的操作语法if(布尔表达式)语句块1;else语句块2;,条件选择语句,示例importjava.io.IOException;classTestpublicstaticvoidmain(Stringargs)throwsIOExceptionSystem.out.println(“请输入你的成绩:);chara=(char)System.in.read();charb=(char)System.in.read();intscore=(a-0)*10+b-0;if(score=60)System.out.println(“你及格了!”);elseSystem.out.println(“你没及格了!”);,C:javaTest请输入你的成绩:65你及格了!C:,条件选择语句,if语句的嵌套if语句中的语句块又出现了if语句若没有配对符,则else与最近的if语句配对例inta=1,b=2,c=3;if(ac)if(cb)System.out.print(c);elseSystem.out.print(a);一定要明确地写上配对符,修改配对关系:if(ac)if(cb)System.out.print(c);elseSystem.out.print(a);,默认Java虚拟机:if(ac)if(cb)System.out.print(c);elseSystem.out.print(a);,条件选择语句,条件运算符三元运算符(ternaryoperator):“?:”表达式1?表达式2:表达式3表达式1的结果为布尔型,表达式2和表达式3的类型相同表达式1true表达式2表达式1false表达式3Shortcutif-elsestatement,if(表达式1)表达式2else表达式3,条件选择语句,示例importjava.io.IOException;classTestpublicstaticvoidmain(Stringargs)throwsIOExceptionSystem.out.println(“请输入三个09之间的数);bytex=(byte)System.in.read();bytey=(byte)System.in.read();bytez=(byte)System.in.read();x-=48;y-=48;z-=48;byten=xy?x:y;bytem=nz?n:z;System.out.println(“max=“+m);,char0(48)char1(49),x=x-48;y=y-48;x=z-48;,C:javaTest请输入三个09之间的数370max=7C:,条件选择语句,示例importjava.io.IOException;classTestpublicstaticvoidmain(Stringargs)throwsIOExceptionSystem.out.println(“中国足球能否进入世界杯?);System.out.println(“是(y)否(n)不一定(p);charc=(char)System.in.read();if(c=y)System.out.println(“Cool”);elseif(c=n)System.out.println(“Bad”);elseif(c=p)System.out.println(“Sorry”);elseSystem.out.println(“InputError”);,逐条if语句进行判断条件匹配,进入语句体否则对if语句继续匹配,switch/开关语句,根据表达式的结果执行多个操作中的一个语法switch(表达式)case值1:语句序列;break;case值2:语句序列;break;default:默认语句;与任一case值不匹配,则进入default语句,switch/开关语句,语法switch(表达式)case值1:语句序列;break;case值2:语句序列;break;default:默认语句;,几点注意switch语句表达式的结果必须是byte,char,short,int类型表达式的结果依次与每个case子句比较break语句用于跳出switch语句default子句是可选的,switch/开关语句,示例1importjava.io.IOException;classTestpublicstaticvoidmain(Stringargs)throwsIOExceptionSystem.out.println(“中国足球能否进入世界杯?);System.out.println(“是(y)否(n)不一定(p);charc=(char)System.in.read();switch(c)casey:System.out.println(“Cool”);break;casen:System.out.println(“Bad”);break;casep:System.out.println(“Sorry”);break;default:System.out.println(“InputError”);break;,示例2,publicclassTestpublicstaticvoidmain(Stringargs)intmonth=2,year=2000;intnumDays=0;switch(month)case1:case3:case5:case7:case8:case10:case12:numDays=31;break;case4:case6:,case9:case11:numDays=30;break;case2:if(year%4=0),switch/开关语句,循环控制语句,反复执行同一代码块直到满足结束条件组成循环的初始状态循环体迭代因子(计数器的递增或递减)控制表达式3种循环语句while循环do-while循环for循环,循环控制语句,while循环语法while(布尔表达式)循环体;,循环控制语句,示例classTestpublicstaticvoidmain(Stringargs)inti,sum;sum=0;i=0;while(ijavaTest输入一句子以.表示结束fdsfs.Output=fdsfs.C:javaTest输入一句子以.表示结束fdsf中国.Output=fdsf?.C:,循环控制语句,for循环:最有效、最灵活的循环结构语法for(初始化部分;条件判断部分;迭代因子)循环体;初始化部分设置循环变量的初值条件判断部分任意布尔表达式迭代因子控制循环变量的增减,循环控制语句,for语句求07之间任意数的阶乘importjava.io.IOException;classTestpublicstaticvoidmain(Stringargs)throwsIOExceptioninti,n,sum=1;System.out.println(“Pleaseinput(07):”);n=System.in.read();n-=48;for(i=1;ijavaTestPleaseinput(07):55!=1201.能否算092.能否算12,134?,循环控制语句,for循环的几点注意初始化部分和迭代因子可以包含多个语句,以“,”分开for(inti=0,j=10;ij;i+,j-)初始化部分、条件判断部分和迭代因子可以为空语句,但以“;”分开,表示无限循环for(;)/infiniteloop.,循环控制语句,如果一个人出生于1970年,那么他这一辈子能有几个闰年(以70岁为寿命长度)intlength=70;intfirstYear=1970;intyear;for(inti=0;ilength;i+)year=firstYear+i;if(year%4=0,19721976198019841988199219962000200420082012201620202024202820322036,循环控制语句,循环的嵌套一个循环体内包含另一个完整的循环结构嵌套的层次多,多重嵌套while循环、do-while循环、for循环相互嵌套,循环控制语句,求1!+2!+3!+9!importjava.io.IOException;classTestpublicstaticvoidmain(Stringargs)throwsIOExceptionintn,sum,total=0;System.out.println(“Pleaseinput(09):”);n=System.in.read();n-=48;for(intj=1;j=0;k-=2)if(k=4)continue;System.out.print(“k=“+k+“t”);,跳转语句,k=6k=2k=0,带标号的continue语句classTestpublicstaticvoidmain(Stringargs)iLoop:for(inti=1;i=10)System.out.print(p+“”);elseSystem.out.print(p+“”);System.out.println();,跳转语句,2456121581620102050,若只有一层循环,带标号和不带标号作用相同若存在循环嵌套,两者作用不同,import/包含语句引入程序所需要的类importjava.io.*;importjava.applet.Applet;package/打包语句指明所定义的类属于哪个包通常作为源程序的第一条语句packagetest;,其他语句,第二章Java语法基础,词法规则数据类型常量与变量运算符和表达式语句数组和字符串,命令行参数,JAVA应用程序的主方法(程序的入口)publicstaticvoidmain(Stringargs)publicstaticvoidmain(Stringargs)命令行参数在启动JAVA应用程序时一次性地传递多个参数C:java类名参数参数空格将参数分开若参数
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 安全认证技术应用
- 2026年西安市高新一中初级中学公开招聘备考题库及完整答案详解1套
- 山东工程职业技术大学(中心校区)2025年招聘备考题库及答案详解参考
- 2026年西安联邦口腔医院招聘6人备考题库带答案详解
- 会议资料保密与安全管理制度
- 2026年松江区天马山学校招聘备考题库有答案详解
- 2026年河北雄安容港农业科技有限公司招聘专业技术人员备考题库及一套答案详解
- 中学学生心理健康教育制度
- 云南特殊教育职业学院2026年春季银龄教师招募备考题库含答案详解
- 养老院消防安全检查制度
- 广东省历年中考语文现代文阅读之非连续性文本阅读12篇(截至2024年)
- 《医疗保障基金使用监督管理条例》培训课件
- 全国初中历史赛课一等奖历史七年级上册(人教2024年新编)《秦统一中国》精美课件
- 《内部审核培训》课件
- 设施设备维护保养服务合同
- 课件-分娩生理
- 北京市西城区2022-2023学年六年级上学期语文期末试卷(含答案)
- 福建省龙岩市连城一中2025届高考英语五模试卷含解析
- 耳聋护理学习
- 幼儿园入学准备指导要点试题
- 《机械常识(第2版)》中职技工全套教学课件
评论
0/150
提交评论