您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 项目/工程管理 > Java_03_运算符、表达式、分支语句
JAVA基础运算符/表达式/分支语句本章目标•掌握Java运算符•表达式•能够使用分支语句–if-else语句–switch语句2运算符算术运算符:+,―,*,/,%,++,――关系运算符:,,=,=,==,!=布尔逻辑运算符:!,&&,||位运算符:&,|,^,~,,,赋值运算符:=扩展赋值运算符:+=,―=,*=,/=字符串连接运算符:+3逻辑运算符(1)逻辑运算符功能!--逻辑非&--逻辑与|--逻辑或^--逻辑异或&&--短路与||--短路或逻辑运算符功能说明:4ab!aa&ba|ba^ba&&ba||btruetruefalsetruetruefalsetruetruetruefalsefalsefalsetruetruefalsetruefalsetruetruefalsetruetruefalsetruefalsefalsetruefalsefalsefalsefalsefalse逻辑运算符使用举例publicclassTest1{publicstaticvoidmain(Stringargs[]){booleana,b,c;a=true;b=false;c=a&b;System.out.println(c);c=a|b;System.out.println(c);c=a^b;System.out.println(c);c=!a;System.out.println(c);c=a&&b;System.out.println(c);c=a||b;System.out.println(c);}}5逻辑运算符(2)短路逻辑运算符应用&&--第一个操作数为假则不判断第二个操作数||--第一个操作数为真则不判断第二个操作数MyDated;if((d!=null)&&(d.day31)){//dosomethingwithd}if(i0||i31){System.out.println(非法赋值);}6赋值运算符(1)赋值运算符=–当=两侧的数据类型不一致时,可以适用默认类型转换或强制类型转换原则进行处理longl=100;inti=(int)l;–特例:可以将整型常量直接赋值给byte,short,char等类型变量,而不需要进行强制类型转换,只要不超出其表数范围byteb=12;//合法byteb=4096;//非法7基本数据类型自动转换•基本数据类型转换等级:•byte,short,char-int-long•float-double•int-float•long-doublepublicclassTest{publicstaticvoidmain(Stringargs[]){inti=(int)Math.pow(2,16);shorts=-32768;//-32768~32767charc=65535;//0~655352的16次方=65536System.out.println(c);}}8赋值运算符(2)扩展赋值运算符9运算符用法举例等效的表达式+=a+=ba=a+b-=a-=ba=a-b*=a*=ba=a*b/=a/=ba=a/b%=a%=ba=a%b&=a&=ba=a&b|=a|=ba=a|b^=a^=ba=a^b=a=ba=ab=a=ba=ab=a=ba=ab字符串连接运算符++除用于算术加法运算外,还可用于对字符串进行连接操作inti=300+5;Strings=hello,+world!;+运算符两侧的操作数中只要有一个是字符串(String)类型,系统会自动将另一个操作数转换为字符串然后再进行连接inti=300+5;Strings=hello,+i+号;System.out.println(s);//输出:hello,305号10表达式表达式是符合一定语法规则的运算符和操作数的序列a5.0+a(a-b)*c-4i30&&i%10!=0表达式的类型和值–对表达式中操作数进行运算得到的结果称为表达式的值–表达式的值的数据类型即为表达式的类型表达式的运算顺序–首先应按照运算符的优先级从高到低的顺序进行–优先级相同的运算符按照事先约定的结合方向进行11三目运算符•三目条件运算符,语法格式:x?y:z•其中x为boolean类型表达式,先计算x的值,若为true,则整个三目运算的结果为表达式y的值,否则整个运算结果为表达式z的值。•举例:intscore=50;intresult=x60?60:x;Stringtype=score60?不及格:及格;12运算符优先级13Separator.(){};,AssociativeOperatorsRtoL++--~!(datatype)LtoR*/%LtoR+-LtoRLtoR==instanceofLtoR==!=LtoR&LtoR^LtoR|LtoR&&LtoR||RtoL?:RtoL=*=/=%=+=-====&=^=|=程序结构•从结构化程序设计角度出发,•程序有三种结构:–顺序结构–选择结构–循环结构14程序结构--顺序结构•先执行A,再执行B.15AB程序结构--选择结构•存在某条件P,若P为真,则执行A,否则执行B。16ABPTF程序结构--循环结构•有两种结构:当型和直到型–当型结构当P条件成立时(T),反复执行A,直到P为“假”时才停止循环17PFTA程序结构--循环结构•直到型先执行A,再判断P,若为T,再执行A,如此反复,直到P为F.18APTF多分支结构•补充:由选择结构可以派生出另一种基本结构––多分支结构.•说明:上述三种结构组成的程序可以解决全部的问题,所以任何一种高级语言都具备上述三种结构。19KK=K1A1A2AiAn……K=K2K=Ki分支语句分支语句实现程序流程控制的功能,即根据一定的条件有选择地执行或跳过特定的语句Java分支语句分类–if-else语句–switch语句20if语句–––条件判断•if的三种形式–形式1if(boolean类型表达式)语句A功能:当表达式值为true时,执行语句A,否则跳过语句A.流程图:–例如:if(xy)z=x;k=10;21表达式语句A=F=Tif语句–––条件判断–形式2if(boolean类型表达式)语句Aelse语句B功能:表达式为非0,执行语句A表达式为0,执行语句B例如:if(xy)z=x;elsez=y;k=10;22表达式语句A语句B=T=Fif语句–––条件判断•形式3if(boolean类型表达式1)语句1elseif(表达式2)语句2elseif(表达式3)语句3……elseif(表达式n)语句nelse语句n23if语句–––条件判断•流程:24表达1表达2表达3表达n语句1语句2语句3语句n语句n+1……=T=F=F=T=T=T=Fif语句应用举例•publicclassTest{–publicstaticvoidmain(Stringargs[]){•intscore=95;•if(score=90)•System.out.println(优秀的感觉真好!);•if(score60){•System.out.println(还要努力呦!);•}•if(score=60&&score90){•System.out.println(马马乎乎啦!);•}–}•}25if-else语句应用举例•publicclassTest{–publicstaticvoidmain(Stringargs[]){–Testt=newTest();–t.test(75);–}–publicvoidtest(intage){•if(age0){•System.out.println(不可能!);•}elseif(age1000){•System.out.println(“千年老妖!);•}else{•System.out.println(“这个人年轻+age+•“努力学习!);•}–}•}26if语句的嵌套•在上述形式的if语句中,又可以是if语句–––称为嵌套。27if(表达式3)语句3if(表达式1)内嵌ifelse内嵌if注意:else与最近的if配对.一般形式if(表达式2)语句1else语句2else语句4三目运算符•Java语言提供了一个简单的条件赋值语句或条件表达式。•问题:当判断条件不论是“真”是“假”,均给同一变量赋值时,能否简化语句书写?•三目运算符28三目运算符•一般形式boolean表达式1?表达式2:表达式3•功能先判表达式1,若为true,则整个三目运算的结果为表达式2的值,否则整个运算结果为表达式3的值。•例如max=ab?a:b;当b,maxa.否则maxb29三目运算符•说明:•1.条件运算符优先于赋值运算符.例:max=(ab?a:b)可去掉()•2.条件运算符低于关系运算符和算术运算符。例:max=ab?a:b+1max=ab?a:(b+1)并不是max=(ab?a:b)+1•3.条件运算符结合性为从右至左.如:ab?a:cd?c:d相当于ab?a:(cd?c:d)30三目运算符•4.条件表达式不能取代一般的if语句,只有当if的两个分支为给同一变量赋值时才可替代if.例:inta=55,b=66;intmax=ab?a:b;Stringresult=a=60?及格:不及格;•建议:在容易引起混淆的地方使用括号。31switch语句语法格式switch(表达式){caseconst1:statement1;break;caseconst2:statement2;break;……caseconstN:statementN;break;[default:statement_dafault;break;]}32switch语句应用举例•publicclassTest{•publicstaticvoidmain(Stringargs[]){•inti=1;•switch(i){•case0:•System.out.println(zero);•break;•case1:•System.out.println(one);•break;•case2:•System.out.println(two);•break;•default:•System.out.println(default);•break;•}•}•}33switch语句有关规则•表达式expr的返回值必须是下述几种类型之一:int,byte,char,short;•case子句中的值constan必须是常量,且所有case子句中的值应是不同的;•default子句是任选的;•break语句用来在执行完一个case分支后使程序跳出switch语句块;34例:根据成绩等级打印百分数段.•switch(grade){•case'A':•System.out.println(85~100);•break;–case'B':–System.out.println(70~84);–break;–case'C':–System.out.println(60~69);–break;–case'D':•System.out.println(60);•break;–default:–System.out.println(error);–break;•}35•switch(grade){•case'A':•case'B':•case'C':–System.out.println(=60);–break;–case'D':•System.out.println(60);•break;–default:–System.out.println(error);–break;•}36本章重点•Java运算符及表达式•Java程序的基本结构–顺序–选择–循环37位运算符位运算符功能~--取反&--按位与|--
本文标题:Java_03_运算符、表达式、分支语句
链接地址:https://www.777doc.com/doc-4007105 .html