语句java实用教程

java实用教程  时间:2021-02-25  阅读:()
33第3章运算符、表达式和语句主要内容运算符与表达式语句概述if条件分支语句switch开关语句循环语句break和continue语句数组与for语句3.
1运算符与表达式Java提供了丰富的运算符,如算术运算符、关系运算符、逻辑运算符、位运算符等.
Java语言中的绝大多数运算符和C语言相同,基本语句如条件分支语句、循环语句等也和C语言类似,因此,本章就主要知识点给予简单的介绍.
3.
1.
1算术运算符与算术表达式1加减运算符加减运算符+,–是二目运算符,即连接两个操作元的运算符.
加减运算符的结合方向是从左到右.
例如2+3–8,先计算2+3,然后再将得到的结果减8.
加减运算符的操作元是整型或浮点型数据,加减运算符的优先级是4级.
2乘、除和求余运算符乘、除和求余运算符*、/、%是二目运算符,结合方向是从左到右,例如2*3/8,先计算2*3,然后再将得到的结果除以8.
乘,除和求余运算符的操作元是整型或浮点型数据,*、/、%运算符的优先级是3级.
用算术运算符和括号连接起来的符合Java语法规则的式子,称为算术表达式.
如x+2*y–30+3*(y+5).
3.
1.
2自增、自减运算符自增、自减运算符++、––是单目运算符,可以放在操作元之前,也可以放在操作元之后.
操作元必须是一个整型或浮点型变量,作用是使变量的值增1或减1,例如:++x(––x)表示在使用x之前,先使x的值增(减)1.
x++(x––)表示在使用x之后,使x的值增(减)1.
粗略地看,++x和x++的作用相当于x=x+1.
但++x和x++的不同之处在于,++x是先执行x=x+1再使用x的值,而x++是先使用x的值再执行x=x+1.
如果x的原值是5,则对!
!
!
!
Java2实用教程第5版34于"y=++x;",y的值为6,对于"y=x++;",y的值为5.
3.
1.
3算术混合运算的精度精度从"低"到"高"排列的顺序是:byteshortcharintlongfloatdouble.
Java在计算算术表达式的值时,使用下列运算精度规则:(1)如果表达式中有双精度浮点数(double型数据),则按双精度进行运算.
例如,表达式5.
0/2+10的结果12.
5是double型数据.
(2)如果表达式中最高精度是单精度浮点数(float型数据),则按单精度进行运算.
例如,表达式5.
0F/2+10的结果12.
5是float型数据.
(3)如果表达式中最高精度是long型整数,则按long精度进行运算.
例如,表达式12L+100+'a'的结果209是long型数据.
(4)如果表达式中最高精度低于int型整数,则按int精度进行运算.
例如,表达式(byte)10+'a'和5/2的结果分别为107和2,都是int型数据.
Java允许把不超出byte、short和char的取值范围的算术表达式的值赋给byte、short和char型变量.
例如,(byte)30+'a'是结果为127的int型常量,bytex=(byte)20+'a';是正确的,但bytex=(byte)30+'b';却无法通过编译,编译错误是"可能损失精度,找到int需要byte",其原因是(byte)30+'b'的结果是int型常量,其值超出了byte变量的取值范围(见上面关于运算精度的讲述(4)).
3.
1.
4关系运算符与关系表达式关系运算符是二目运算符,用来比较两个值的关系.
关系运算符的运算结果是boolean型,当运算符对应的关系成立时,运算结果是true,否则是false.
例如,101的结果是true,3!
=5的结果是true,10>20–17的结果为true,因为算术运算符的级别高于关系运算符,10>20–17相当于10>(20–17),其结果是true.
结果为数值型的变量或表达式可以通过关系运算符(如表3.
1所示)形成关系表达式.
例如4>8,(x+y)>80等.
表3.
1关系运算符运算符优先级用法含义结合方向>=op2op1=op2op18&&9>2的结果为false,2>8||9>2的结果为true.
由于关系运算符的级别高于&&、||的级别,2>8&&8>2相当于(2>8)&&(9>2).
逻辑运算符&&和||也称作短路逻辑运算符,这是因为当op1的值是false时,&&运算符在进行运算时不再去计算op2的值,直接就得出op1&&op2的结果是false;当op1的值是true时,||运算符在进行运算时不再去计算op2的值,直接就得出op1||op2的结果是true.
3.
1.
6赋值运算符与赋值表达式赋值运算符=是二目运算符,左面的操作元必须是变量,不能是常量或表达式.
设x是一个整型变量,y是一个boolean型变量,x=20和y=true都是正确的赋值表达式,赋值运算符的优先级较低,是14级,结合方向是从右到左.
赋值表达式的值就是=左面变量的值.
例如,假如a、b是两个int型变量,那么表达式b=12和a=b=100的值分别是12和100.
注意不要将赋值运算符=与等号关系运算符==混淆,例如,12=12是非法的表达式,而表达式12==12的值是true.
3.
1.
7位运算符整型数据在内存中以二进制的形式表示,例如一个int型变量在内存中占4个字节共32位,int型数据7的二进制表示是:00000000000000000000000000000111左面最高位是符号位,最高位是0表示正数,是1表示负数.
负数采用补码表示,例如–8的补码表示是:111111111111111111111111111111000Java2实用教程第5版36这样就可以对两个整型数据实施位运算,即对两个整型数据对应的位进行运算得到一个新的整型数据.
1按位与运算按位与运算符&是双目运算符,对两个整型数据a、b按位进行运算,运算结果是一个整型数据c.
运算法则是:如果a、b两个数据对应位都是1,则c的该位是1,否则是0.
如果b的精度高于a,那么结果c的精度和b相同.
例如:a:00000000000000000000000000000111&b:10000001101001011111001110101011c:000000000000000000000000000000112按位或运算按位或运算符|是二目运算符,对两个整型数据a、b按位进行运算,运算结果是一个整型数据c.
运算法则是:如果a、b两个数据对应位都是0,则c的该位是0,否则是1.
如果b的精度高于a,那么结果c的精度和b相同.
3按位非运算按位非运算符~是单目运算符,对一个整型数据a按位进行运算,运算结果是一个整型数据c.
运算法则是:如果a对应位是0,则c的该位是1,否则是0.
4按位异或运算按位异或运算符^是二目运算符,对两个整型数据a、b按位进行运算,运算结果是一个整型数据c.
运算法则是:如果a、b两个数据对应位相同,则c的该位是0,否则是1.
如果b的精度高于a,那么结果c的精度和b相同.
由异或运算法则可知:a^a=0,a^0=a.
因此,如果c=a^b,那么a=c^b,也就是说,^的逆运算仍然是^,即a^b^b等于a.
位运算符也可以操作逻辑型数据,法则是:当a、b都是true时,a&b是true,否则a&b是false.
当a、b都是false时,a|b是false,否则a|b是true.
当a是true时,~a是false;当a是false时,~a是true.
位运算符在操作逻辑型数据时,与逻辑运算符&&、||、!
不同的是:位运算符要计算完a和b的值之后再给出运算的结果.
例如,x的初值是1,那么经过下列逻辑比较运算后,((y=1)==0))&&((x=6)==6));x的值仍然是1,但是如果经过下列位运算之后,((y=1)==0))&((x=6)==6));x的值将是6.
在下面的例子1中,利用异或运算的性质,对几个字符进行加密并输出密文,然后再解密,运行效果如图3.
1所示.
例子1Example3_1.
javapublicclassExample3_1{图3.
1异或运算第3章运算符、表达式和语句37publicstaticvoidmain(Stringargs[]){chara1='十',a2='点',a3='进',a4='攻';charsecret='A';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);}}3.
1.
8instanceof运算符该运算符是二目运算符,左面的操作元是一个对象,右面是一个类.
当左面的对象是右面的类或子类创建的对象时,该运算符运算的结果是true,否则是false(有关细节详见5.
3.
2节).
3.
1.
9运算符综述Java表达式就是用运算符连接起来的符合Java规则的式子.
运算符的优先级决定了表达式中运算执行的先后顺序.
例如,x0)y=10;z=20;elsey=-100;正确的写法是:if(x>0){y=10;z=20;}elsey=100;需要注意的是,在if-else语句中,其中的复合语句中如果只有一条语句,{}可以省略不写,但为了增强程序的可读性最好不要省略(这是一个很好的编程风格).
例子3中有两条if-else语句,其作用是根据成绩输出相应的信息,运行效果如图3.
4所示.
例子3Example3_3.
javapublicclassExample3_3{publicstaticvoidmain(Stringargs[]){intmath=65,english=85;if(math>60){System.
out.
println("数学及格了");}else{System.
out.
println("数学不及格");}if(english>90){System.
out.
println("英语是优");}else{System.
out.
println("英语不是优");}System.
out.
println("我在学习if-else语句");}}3.
3.
3if-elseif-else语句if-elseif-else语句是多条件分支语句,即根据多个条件来控制程序执行的流程.
图3.
4使用if-else语句第3章运算符、表达式和语句41if-elseif-else语句的语法格式:if(表达式){若干语句}elseif(表达式){若干语句}#else{若干语句}if-elseif-else语句的流程图如图3.
5所示.
在if-elseif-else语句中,if以及多个elseif后面的一对小括号()内的表达式的值必须是boolean类型.
程序执行if-elseif-else时,按该语句中表达式的顺序,首先计算第1个表达式的值,如果计算结果为true,则执行紧跟着的复合语句,结束当前if-elseif-else语句的执行,如果计算结果为false,则继续计算第2个表达式的值,依次类推,假设计算第m个表达式的值为true,则执行紧跟着的复合语句,结束当前if-elseif-else语句的执行,否则继续计算第m+1个表达式的值,如果所有表达式的值都为false,则执行关键字else后面的复合语句,结束当前if-elseif-else语句的执行.
图3.
5if-elseif-else多条件、多分支语句if-elseif-else语句中的else部分是可选项,如果没有else部分,当所有表达式的值都为false时,结束当前if-elseif-else语句的执行(该语句什么都没有做).
需要注意的是,在if-elseif-else语句中,其中的复合语句中如果只有一条语句,{}可以省略不写,但为了增强程序的可读性最好不要省略.
3.
4switch开关语句switch语句是单条件多分支的开关语句,它的一般格式定义如下(其中break语句是可选的).
!
!
Java2实用教程第5版42switch(表达式){case常量值1:若干个语句break;case常量值2:若干个语句break;#case常量值n:若干个语句break;default:若干语句}switch语句中"表达式"的值可以为byte、short、int、char型;"常量值1"到"常量值n"也是byte、short、int、char型,而且要互不相同.
switch语句首先计算表达式的值,如果表达式的值和某个case后面的常量值相等,就执行该case里的若干个语句直到碰到break语句为止.
如果某个case中没有使用break语句,一旦表达式的值和该case后面的常量值相等,程序不仅执行该case里的若干个语句,而且继续执行后继的case里的若干个语句,直到碰到break语句为止.
若switch语句中的表达式的值不与任何case的常量值相等,则执行default后面的若干个语句.
switch语句中的default是可选的,如果它不存在,并且switch语句中表达式的值不与任何case的常量值相等,那么switch语句就不会进行任何处理.
前面学习的分支语句(if语句、if-else语句和if-elseif-else语句)的共同特点是根据一个条件选择执行一个分支操作,而不是选择执行多个分支操作.
在switch语句中,通过合理地使用break语句,可以达到根据一个条件选择执行一个分支操作(一个case)或多个分支操作(多个case)的结果.
下面的例子4使用了switch语句判断用户从键盘输入的正整数是否为中奖号码.
例子4Example3_4.
javaimportjava.
util.
Scanner;publicclassExample3_4{publicstaticvoidmain(Stringargs[]){intnumber=0;System.
out.
println("输入正整数(回车确定)");Scannerreader=newScanner(System.
in);number=reader.
nextInt();switch(number){case9:case131:case12:System.
out.
println(number+"是三等奖");break;case209:case596:第3章运算符、表达式和语句43case27:System.
out.
println(number+"是二等奖");break;case875:case316:case59:System.
out.
println(number+"是一等奖");break;default:System.
out.
println(number+"未中奖");}}}需要强调的是,switch语句中表达式的值可以是byte、short、int、char型,但不可以是long型数据.
如果将例子4中的intnumber=0;更改为longnumber=0;将导致编译错误.
3.
5循环语句循环语句是根据条件,要求程序反复执行某些操作,直到程序"满意"为止.
3.
5.
1for循环语句for语句的语法格式:for(表达式1;表达式2;表达式3){若干语句}for语句由关键字for、一对小括号()中用分号分割的三个表达式,以及一个复合语句组成,其中的表达式2必须是一个求值为boolean型数据的表达式,而复合语句称作循环体.
循环体只有一条语句时,大括号{}可以省略,但最好不要省略,以便增加程序的可读性.
表达式1负责完成变量的初始化;表达式2是值为boolean型的表达式,称为循环条件;表达式3用来修整变量,改变循环条件.
for语句的执行规则是:(1)计算表达式1,完成必要的初始化工作.
(2)判断表达式2的值,若表达式2的值为true,则进行(3),否则进行(4).
(3)执行循环体,然后计算表达式3,以便改变循环条件,进行(2).
(4)结束for语句的执行.
for语句执行流程如图3.
6所示.
图3.
6for循环语句!
!
Java2实用教程第5版44下面的例子5计算8+88+888+8888+…的前12项和.
例子5Example3_5.
javapublicclassExample3_5{publicstaticvoidmain(Stringargs[]){longsum=0,a=8,item=a,n=12,i=1;for(i=1;ij/2){System.
out.
println(""+j+"是素数");}}}}3.
7for语句与数组JDK1.
5对for语句的功能给予扩充、增强,以便更好地遍历数组.
语法格式如下:for(声明循环变量:数组的名字){…}其中,声明的循环变量的类型必须和数组的类型相同.
这种形式的for语句类似自然语言中的"foreach"语句,为了便于理解上述for语句,可以将这种形式的for语句翻译成"对于循环变量依次取数组的每一个元素的值".
下面的例子8分别使用for语句的传统方式和改进方式遍历数组.
例子8Example3_8.
javapublicclassExample3_8{publicstaticvoidmain(Stringargs[]){inta[]={1,2,3,4};charb[]={'a','b','c','d'};for(intn=0;n0B.
m++>0C.
m=0D.
m>100&&truepublicclassE{publicstaticvoidmain(Stringargs[]){intm=10,n=0;while(【代码】){n++;}}}(3)假设有"intx=1;",以下哪个代码导致"可能损失精度,找到int需要char"这样的编译错误A.
shortt=12+'a';B.
charc='a'+1;C.
charm='a'+x;D.
byten='a'+1;3.
阅读程序(1)下列程序的输出结果是什么publicclassE{publicstaticvoidmain(Stringargs[]){charx='你',y='e',z='吃';if(x>'A'){y='苹';z='果';}第3章运算符、表达式和语句49elsey='酸';z='甜';System.
out.
println(x+","+y+","+z);}}(2)下列程序的输出结果是什么publicclassE{publicstaticvoidmain(Stringargs[]){charc='\0';for(inti=1;i0){x--;}System.
out.
print("x="+x+",y="+y);}}4.
编程题(1)编写应用程序求1!
+2!
+…+10!
.
(2)编写一个应用程序求100以内的全部素数.
(3)分别用do-while和for循环计算1+1/2!
+1/3!
+1/4!
+…的前20项和.
(4)一个数如果恰好等于它的因子之和,这个数就称为完数.
编写应用程序求1000之内的所有完数.
(5)编写应用程序,使用for循环语句计算8+88+888+…前10项之和.
(6)编写应用程序,输出满足1+2+3+…+n<8888的最大正整数n.

Friendhosting(月1.35欧元),不限流量,9机房可选

今天9月10日是教师节,我们今天有没有让孩子带礼物和花送给老师?我们这边不允许带礼物进学校,直接有校长在门口遇到有带礼物的直接拦截下来。今天有看到Friendhosting最近推出了教师节优惠,VPS全场45折,全球多机房可选,有需要的可以看看。Friendhosting是一家成立于2009年的保加利亚主机商,主要提供销售VPS和独立服务器出租业务,数据中心分布在:荷兰、保加利亚、立陶宛、捷克、乌...

搬瓦工香港 PCCW 机房已免费迁移升级至香港 CN2 GIA 机房

搬瓦工最新优惠码优惠码:BWH3HYATVBJW,节约6.58%,全场通用!搬瓦工关闭香港 PCCW 机房通知下面提炼一下邮件的关键信息,原文在最后面。香港 CN2 GIA 机房自从 2020 年上线以来,网络性能大幅提升,所有新订单都默认部署在香港 CN2 GIA 机房;目前可以免费迁移到香港 CN2 GIA 机房,在 KiwiVM 控制面板选择 HKHK_8 机房进行迁移即可,迁移会改变 IP...

CYUN专注海外精品服务器资源 国庆钜惠 最低5折起 限量促销

国庆钜惠 最低5折起 限量促销CYUN专注海外精品服务器资源,主营香港CN2 GIA、美国CERA、美国高防服务器资源,实体公司,ISP/IDC资质齐全,客服配备齐全。本次针对国庆推出非常给力的促销活动,旗下所有平台同享,新老客户同享,限时限量,售完截止。活动截止时间:2021年10月9日官网地址:www.cyun.net参与机型:香港CN2 GIA云服务器、香港双程CN2云服...

java实用教程为你推荐
站长故事科学家的故事200字深圳公交车路线深圳公交车路线安卓应用平台安卓手机下软件哪个网站好中小企业信息化中小企业如何进行企业信息化规划保护气球什么气球可以骑?怎么升级ios6苹果6怎么升级最新系统人人逛街为什么女人都喜欢逛街?谢谢了,大神帮忙啊freebsd安装最近安装了FreeBSD安装的时候没创建普通用户,然后用超级用户的身份进入系统,但是超级用户只有一个#提示符,怎么在超级用户下去创建一个普通的用户了?网页窗口最大化怎样才能打开网页窗口自己最大化怎么把网页的字变大网页的字很小,怎样调大
租服务器价格 韩国vps俄罗斯美女 Vultr rackspace 主机屋免费空间 parseerror 刀片式服务器 秒杀汇 metalink 33456 服务器监测 腾讯总部在哪 网购分享 www789 测速电信 godaddy空间 云服务是什么意思 开心online 标准机柜 更多