java基础教程 (5)

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

面向对象程序设计、第五章运算符以及条件判断结构学习目标:掌握常用的各种运算符if条件判断语句switch结构1.算术运算符•算术运算符包括:+,-,*,/,++,--,%–没有指数运算Math.pow(2.0,3.0);//2.03.0–整数除法:截去余数7/5结果为1–取模%:返回余数7%5结果为2算术运算符:问题?1)-7/5=2)-7%5=3)7%-5=4)5.5%1.0=5)7/-5=6)3/6*12=7)15.25%0.5=8)15.75%0.5=-1-220.5-100.250.25取模运算的结果符号与第一个操作数相同升级和类型转换•赋值和表达式可能引起计算的数据类型与保存结果的存储位置之间的不匹配。左边的数据类型右边的数据类型:bytenum1=53;bytenum2=47;longnum3;num3=num1*num2;左边的数据类型右边的数据类型:intnum1=53;intnum2=47;bytenum3;num3=num1+num2;左边的数据类型右边的数据类型:intnum1=53;intnum2=47;bytenum3;num3=num1*num2;注意:Java是强类型语言,因此,在进行赋值操作时要对类型进行检查;自动升级规则1.(byte或short)opint→int2.(byte或short或int)oplong→long3.(byte或short或int或long)opfloat→float4.(byte或short或int或long或float)opdouble→double5.charopint→int其中,箭头左边表示参与运算的数据类型op为运算符(如加、减、乘等)右边表示运算结果的数据类型。如:3+4.5,因为4.5是float型,所以3先被转换为float型,然后再于4.5相加,其结果也为float型。例:自动升级实例publicclassPromotion{publicstaticvoidmain(Stringargs[]){byteb=10;charc='a';inti=90;floatf=3.5f;doubled=1.234;floatf1;f1=f*b;inti1;i1=c+i;doubled1;d1=f1/i1–d;}}查看结果:Test.java查看结果:Promotion.javapublicclassAge{publicstaticvoidmain(Stringargs[]){intageYears;intageDays;longageSeconds;ageYears=Integer.parseInt(args[0]);ageDays=ageYears*365;ageSeconds=(ageYears*365*24L*60*60);System.out.print(“Youare”+ageDays+”daysold.”);System.out.print(“Youare”+ageSeconds+”secondsold.”);}}查看结果:Age.java2.关系运算符•六个关系运算符:、、=、=、==和!=•用于比较数值类型数据的大小,结果是布尔值•例如:12;//false3.5!=1;//true51.5=23.0;//true540=654;//true24==3*8;//truebooleantest1=(1010);//test1=false;注意事项•、、=和=只能用来比较两个数值类型数据(含字符类型)的大小–不能用于Strings、booleans、arrays或其他类型3.布尔逻辑运算符操作数要求是布尔类型数据,结果为布尔值•六个布尔逻辑运算符:1)&(逻辑与AND)2)|(逻辑或OR)3)^(逻辑异或XOR)4)!(逻辑非NOT)——单目运算符,即只有一个操作数5)&&(条件与AND)6)||(条件或OR)短路规则(&&和||)•如果从第一个操作数可以推断出表达式结果,就不再计算第二个操作数•例如:if((x==2)&&(y!=2))System.out.println(两个条件都为true.);逻辑运算(&和|)•两个操作数均会被运算(即不采用短路规则)•例如,(birthday==true)|(++age=65)查看结果:J_Boolean.java4.位运算符•位运算符包括:&、|、~、^、、和1)带符号右移2)左移3)不带符号右移•越晦涩难懂的,越会被SCJP考到(?)•移位操作是:先将整数写成二进制形式,然后按位操作,最后产生一个新的数•注意:只用于整数5.赋值类运算符•赋值类运算符包括:=、+=、-=、*=、/=、&=、|=、%=op1=op1二元运算符op2;等价于op1二元运算符=op2;•例如:a+=b;等价于a=a+b;i*=2+3等价于?6.条件运算符•条件运算符“?:”的表达式形式为•(op1?op2:op3)其中要求op1为布尔表达式Op1的值为true,结果为表达式op2的值;否则,结果为表达式op3的值op2和op3需要返回相同的数据类型,不能为void•例如:•inti=5;intk=((i=0)?1:-1);intx=5,y=8,z=2intk=x3?y:z;请问k=?k=2inty=x0?x:-x;请问y=?y=|x|7.其他运算符•其他运算符包括:(类型)、.、[]、()、instanceof和new•例如:inta=51;charc=(char)a;运算符优先级别•优先级规则:()乘除(从左到右)加减(从左到右)•复杂的表达式:C=25-5*4/2-10+4;从左到右的规则求值,结果是:34按照优先级规则求值,结果是:9•可以用()来改变优先顺序或使表达式更容易理解•例如:–a+b+c/3–(a+b+c)/3JAVA的流程控制语句•结构化程序设计的三种基本控制语句–顺序结构–选择结构三种类型:if、if/else和switch–循环结构三种类型:for、while和do/while按语句书写的先后顺序执行在若干路径中有条件地择一执行当某条件成立时,反复执行一段代码if语句•if语句的格式是:if(布尔表达式)语句或if(布尔表达式){一条或多条语句}•例如if(grade=60)System.out.println(Passed);if-else语句•if-else语句的格式是:if(布尔表达式)语句1或语句块1else语句2或语句块2•例如:if(grade=60)System.out.println(Passed!);elseSystem.out.println(Failed!);•例1System.out.println(studentGrade=60?Passed“:Failed);•例2max=(ab?a:b);可以写成:if(ab)max=a;elsemax=b;例:比较两个数的大小,并按照从大到小的顺序输出到屏幕上。publicclassCompareTwo{publicstaticvoidmain(String[]args){doubled1=23.4;doubled2=56.9;if(d1=d2)System.out.println(d1+”=“+d2);elseSystem.out.println(d2+”=“+d1);}}多重If结构查看结果:Coffee.javaIf条件AIf条件B语句块1else语句块2注意:else总是与最近的if匹配If条件A{If条件B语句块1}else语句块2测试String之间的等同性•使用==比较String在内存中的引用是否相等•要测试两个字符串之间是否具有等同性用equalsswitch语句形式如下:switch(表达式){case判断值1:语句块1;[break;]case判断值2:语句块2;[break;]…case判断值n:语句块n;[break;][default:缺省处理语句;break;]}1.要注意表达式必须是符合char,byte,short,int类型的表达式,而不能使用boolean类型,浮点类型或long类型,也不能为一个字符串;2.将表达式的值依次与每个case子句中的判断值相比较。如果匹配成功,则执行该case子句中常量值后的语句,直到遇到break语句为止;3.case子句中判断值的类型必须与表达式的类型相容,且每个case子句中判断值的值必须是不同的;4.default子句是可选的,当表达式的值与任一case中的判断值都不匹配时,就执行default后的语句。如果表达式的值与任一case中的判断值都不匹配且没有default子句,则程序不执行任何操作,直接跳出switch语句,进入后续程序段的执行。多分支选择结构switch语句switch语句的流程如图所示:表达式break语句1break语句2break语句nbreak缺省处理语句后续语句判断值1判断值2判断值ndefault…….switch语句的注意点5.break语句用来在执行完一个case分支后,使程序跳出switch语句,执行switch语句的后续语句。因此一般情况下,在每个case分支后,要用break来终止后面的case分支语句的执行;6.在一些特殊的情况下,例如多个不同的case值要执行一组相同的操作,可以写成如下形式:…case判断值n:case判断值n+1:语句[break;]…7.case分支中包括多个执行语句时,可以不用花括号“{}”括起;8.通过if-else语句可以实现switch语句所有的功能。但通常使用switch语句更简练,且可读性强,程序的执行效率也高;9.if-else语句可以基于一个范围内的值或一个条件来进行不同的操作,但switch语句中的每个case子句都必须对应一个单值。查看结果:SwitchTest.java查看结果:SwitchDaysInMonth.java例:用switch语句实现学生成绩的百分制到等级制的转换。classSwitchDemo{publicstaticvoidmain(String[]args){inttestscore=88;chargrade;switch(testscore/10)//两个整型数相除的结果还是整型case10://此处没有使用breakcase9:grade='A';//值为10和9时的操作是相同的break;case8:grade='B';break;case7:grade='C';break;case6:grade='D';break;default:grade='F';break;}System.out.println(gradeis:+grade);}}课堂练习•编写一个Application程序,输出1到1000之间所有能被3整除又可以被7整除的数。星期三上机实验•实验内容:实验4练习•1、判断下列表达式是否含有语法错误,如果有,请指出错误原因•1)01&&(4+6)•2)4.2%2.1•3)’a’’A’•4)’1’==1布尔逻辑运算符的操作数只能是boolean型

1 / 43
下载文档,编辑使用

©2015-2020 m.111doc.com 三一刀客.

备案号:赣ICP备18015867号-1 客服联系 QQ:2149211541

×
保存成功