ImageVerifierCode 换一换
格式:DOC , 页数:18 ,大小:150.54KB ,
资源ID:7603241      下载积分:10 金币
验证码下载
登录下载
邮箱/手机:
图形码:
验证码: 获取验证码
温馨提示:
支付成功后,系统会自动生成账号(用户名为邮箱或者手机号,密码是验证码),方便下次登录下载和查询订单;
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

开通VIP
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.zixin.com.cn/docdown/7603241.html】到电脑端继续下载(重复下载【60天内】不扣币)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

开通VIP折扣优惠下载文档

            查看会员权益                  [ 下载后找不到文档?]

填表反馈(24小时):  下载求助     关注领币    退款申请

开具发票请登录PC端进行申请。


权利声明

1、咨信平台为文档C2C交易模式,即用户上传的文档直接被用户下载,收益归上传人(含作者)所有;本站仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。所展示的作品文档包括内容和图片全部来源于网络用户和作者上传投稿,我们不确定上传用户享有完全著作权,根据《信息网络传播权保护条例》,如果侵犯了您的版权、权益或隐私,请联系我们,核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
2、文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为仲裁依据,个别因单元格分列造成显示页码不一将协商解决,平台无法对文档的真实性、完整性、权威性、准确性、专业性及其观点立场做任何保证或承诺,下载前须认真查看,确认无误后再购买,务必慎重购买;若有违法违纪将进行移交司法处理,若涉侵权平台将进行基本处罚并下架。
3、本站所有内容均由用户上传,付费前请自行鉴别,如您付费,意味着您已接受本站规则且自行承担风险,本站不进行额外附加服务,虚拟产品一经售出概不退款(未进行购买下载可退充值款),文档一经付费(服务费)、不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
4、如你看到网页展示的文档有www.zixin.com.cn水印,是因预览和防盗链等技术需要对页面进行转换压缩成图而已,我们并不对上传的文档进行任何编辑或修改,文档下载后都不会有水印标识(原文档上传前个别存留的除外),下载后原文更清晰;试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓;PPT和DOC文档可被视为“模板”,允许上传人保留章节、目录结构的情况下删减部份的内容;PDF文档不管是原文档转换或图片扫描而得,本站不作要求视为允许,下载前可先查看【教您几个在下载文档中可以更好的避免被坑】。
5、本文档所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用;网站提供的党政主题相关内容(国旗、国徽、党徽--等)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
6、文档遇到问题,请及时联系平台进行协调解决,联系【微信客服】、【QQ客服】,若有其他问题请点击或扫码反馈【服务填表】;文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“【版权申诉】”,意见反馈和侵权处理邮箱:1219186828@qq.com;也可以拔打客服电话:4009-655-100;投诉/维权电话:18658249818。

注意事项

本文(运算符及表达式.doc)为本站上传会员【仙人****88】主动上传,咨信网仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知咨信网(发送邮件至1219186828@qq.com、拔打电话4009-655-100或【 微信客服】、【 QQ客服】),核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载【60天内】不扣币。 服务填表

运算符及表达式.doc

1、2.3运算符和表达式 运算符指明了对各种类型的操作数所进行的运算。Java提供了丰富的运算符,Java语言的基本运算符分为算术运算符、逻辑运算符、关系运算符和位运算符4大类。同时也可以使用圆括号将一个表达式的几个部分组合到一起,并根据标准的代数规则建立优先关系。此外,Java还提供了余数运算符(又称取模运算符)生成两个整数相除所得的余数。 表达式是由标识符、常量、变量和运算符组成,是程序的基本组成部分。 2.3.1优先级、结合性以及单/双目运算 1.优先级、结合性 运算符的优先级决定了表达式中不同运算执行的先后顺序。如关系运算符的优先级要高于逻辑运算符的,x>y&&!z相当于

2、x>y)&&(!z)。 运算符的结合性决定了并列的相同运算的先后执行顺序。如对于左结合的“+”,a+b+c等价于(a+b)+c;对于右结合的“!”,!!x等价于!(!x)。 表2.6 Java运算符的优先级和结合性 优先级 描述 运算符 结合性 1 最高优先级 .、[]、() 左/右 2 单目运算 =、~、!、++、--强制类型转换符 右 3 算数乘除运算 *、/、!、% 左 4 算数加减运算 +、- 左 5 移位运算 >>、<<、>>> 左 6 大小关系运算 <、<=、>、>= 左 7 相等关系运算 ==、!= 左

3、 8 按位与,非简洁与 & 左 9 按位异或运算 ^ 左 10 按位或,非简洁或 | 左 11 简洁与 && 左 12 简洁或 || 左 13 三目条件运算 ?: 右 14 简单、复杂赋值 =运算符= 右 大多数人在第一次学习计算机语言时,经常把运算符优先级和运算顺序混淆。这两个概念实际上是不相同的。优先级规则帮助我们确定表达式中哪个运算符应该先跟哪些操作数执行这个运算符的运算。 例如,下面的代码中“*”运算符的操作数是x和(y+z): w=x*(y+z); 计算的顺序规则不是决定何时进行特殊定义的运算,而是决定何时对操作数进行

4、计算。 下面有三个帮助我们记住关于表达式如何被计算的规则: (1)对于二元运算符,左边的操作数先计算,右边的操作数后计算; (2)操作数总是在执行运算符定义的运算之前计算出来的; (3)如果在方法中调用了多个参数,这些参数是用逗号隔开的,那么参数是严格按照从左到右的规则进行计算的。 2.单目/双目运算 运算符指明了对操作数所进行的运算。 运算符按其要求的操作数个数可分为: 单目运算符 如 ++、-- 双目运算符 如 +、-、*、/、% 三目运算符 如 ? : 运算符按其功能分为七类: 算术运算符 如 +、-

5、/、%、++、-- 关系运算符 如 >、<、>=、<=、==、!= 逻辑运算符 如 !、&&、||、^ 位运算符 如 >>、<<、>>>、&、|、^、~ 条件运算符 如 ? : 赋值运算符 如 =、+=、-= 其他 分量运算符、下标运算符[]、实例运算符instanceof。 2.3.2算术运算符 算术表达式由操作数和算术运算符组成。在算术表达式中,操作数只能是整型或浮点型数据,算术运算符作用于操作数,完成算术运算。Java的算术运算符分为一元运算符和二元

6、运算符两种。 1.一元算术运算符 一元算术运算符涉及的操作数只有一个,一个算术表达式是由一个操作数和一个一元算术运算符构成的。一元算术运算符共有四种,如表2.7所示。 表2.7 一元算术运算符 运算符 名称 表达式 功能 + 一元加 +opt1 取正值 - 一元减 -opt1 取负值 ++ 增量 ++opt1 加1 -- 减量 --opt1 减1 一元加和一元减运算符仅仅表示某个操作数的符号,其操作结果为该操作数的正值或负值。增量运算符将操作数加1,如对浮点数进行增量操作,则结果为加1.0;减量运算符将操作数减1,如对浮点数进行减量操作,则结

7、果为减1.0。 增量运算符为操作数加1,如下所示: a++; 它等价于: a+=1; 增量运算符和减量运算符放在变量的左边和放在变量的右边的作用是不同的,变量放在运算符的后面(如++a),就是先进行加运算后进行赋值运算。 下面的程序代码中y的结果是4: int x=3; int y=++x; //y=4 x=4 如果运算符出现在变量的右边,则在赋值之后执行运算。注意,在两种情况下x的值都是7: int x=3; int y=x++; //y=3 x=4 类似于增量运算,减量操作符(--)是从变量上减1,并且运算符放在变量的左边和右边所得的结果也是不同

8、的。下面是几个单目运算符的例子: int a1=1,a2=1,a3=1,a4=1; int b1,b2,b3,b4; b1=++a1; //a1先加1,再赋于b1,b1=2,x1=2 b2=a2++; //a2先赋于b2,再自增1,b2=1,a2=2 b3=--a3; //a3先减1`,再赋于b3,b3=0,x3=0 b4=a4--; //a4先赋于b4,再自减1,b4=1,a4=0 程序2.2 SOption.java public class SOption{ public s

9、tatic void main(String[] args){ int a=3; int b=1; int c; c=a++*3; System.out.println("a="+a); System.out.println("c="+c); c=++a*3; System.out.println("a="+a); System.out.println("c="+c); c=a--*3; System.out.println("a="+a); System.out.println("c="+c); c=--a*3; System.out.println("a="+a

10、); System.out.println("c="+c); } } 输入结果: a=4 c=9 a=5 c=15 a=4 c=15 a=3 c=9 2.二元算术运算符应有两个操作数,两个操作数加一个二元算术运算符可构成一个算术表达式。二元运算符共有5种,如表2.8所示。 表2.8 二元算术运算符 运算符 表达式 名称及功能 + opt1+opt2 加 - opt1-opt2 减 * opt1*opt2 乘 / opt1/opt2 除 % opt1%opt2 模数除(求余) 二元算术运算符适用于所有数值型数据类型,包括整型和

11、浮点型。值得注意的是:若操作数全为整型,那么,只要其中有一个为long型,则表达式结果也为long型;其他情况下,即使两个操作数全为byte型或short型,表达式结果也为int型;若操作数为浮点型,则只要其中有一个为double型,表达式结果就为double型,只有两个操作数全是float型或其中一个是float型而另外一个是整型时,表达式结果才是float型。另外还应该注意,当“/”运算和“%”运算中除数为0时,会产生异常。 在以上提到的这些运算中我们可能对取模运算不太熟悉。取模运算就是求出被模数除所剩的余数。例如,4%2的余数为0,因为4能够被2整除。而5%2的结果是1,因为5被2除的

12、结果是2,余1。下面是几个双目运算的例子: 6+4=10;6+4.0=10.0; 6-4=2;6-4.0=2.0; 6*4=24;6*4.0=24.0; 3/2=1;3.0/2=1.5; 6%2=0;8%6=2; 与C/C++不同,对取模运算符号“%”来说,其操作数可以为浮点数,例如11.1%10=1.1。 程序2.3 DOption.java import java.util.*; public class DOption { // Create a shorthand to save typing: static void prt(String s){ System

13、out.println(s); } static void pInt(String s, int i){ prt(s + " = " + i); } // shorthand to print a string and a float: static void pFrt(String s, float f){ prt(s + " = " + f); } public static void main(String[] args){ // 创建一个随机数生成器; // seeds with current time by default: Random rand = n

14、ew Random(); int i, j, k; // '将最大值限制到99; j = rand.nextInt() % 100; k = rand.nextInt() % 100; pInt("j",j); pInt("k",k); i = j + k; pInt("j + k", i); i = j - k; pInt("j - k", i); i = k / j; pInt("k / j", i); i = k * j; pInt("k * j", i); i = k % j; pInt("k % j", i); j %= k; pInt("j %= k", j)

15、 // Floating-point number tests: float u,v,w; // applies to doubles, too v = rand.nextFloat(); w = rand.nextFloat(); pFrt("v", v); pFrt("w", w); u = v + w; pFrt("v + w", u); u = v - w; pFrt("v - w", u); u = v * w; pFrt("v * w", u); u = v / w; pFrt("v / w", u); //同样适用于 char, byte, short, i

16、nt, long and double类型: u += v; pFrt("u += v", u); u -= v; pFrt("u -= v", u); u *= v; pFrt("u *= v", u); u /= v; pFrt("u /= v", u); } } 输出结果: j = -8 k = 96 j + k = 88 j - k = -104 k / j = -12 k * j = -768 k % j = 0 j %= k = -8 v = 0.13120472 w = 0.07683301 v + w = 0.20803773 v - w

17、 0.054371715 v * w = 0.0100808535 v / w = 1.7076609 u += v = 1.8388656 u -= v = 1.7076609 u *= v = 0.22405317 u /= v = 1.7076609 注:由于是利用随机数生成器来产生的数据,所以每次的执行结果不尽相同。 2.算术运算中需要注意的问题有以下几条: (1)只有整型类型(int,long,short)数据才能进行取模运算,float型和double型数据不能进行取模运算; (2)取模运算%是求两个数相除的余数。如100%9的结果是1; (3)两个整型类型

18、的数据做除法时,结果是取整数商。如果要保留小数部分,则应该对除法运算的操作数做强制类型转换。如5/2的结果是2而不是2.5; (4)在算术表达式中,如果出现不同类型的数据混合运算时,表达式类型为存储长度最大、精度最高的数据类型; (5)表达式中有括号的,应先求括号中表达式的操作数的值。因此,括号通常用于按程序员的意愿,强行按某一顺序进行求值。我们认为括号具有“最高的优先级”。在嵌套括号的情况下,由内层向外层求值; (6)如果一个表达式中包含了几个乘、除和取模运算,那么操作运算按照从左到右的顺序求值。乘、除和取模都在同样的优先级上; (7)算术运算符的操作数必须是数字类型的,不能在布尔型

19、上使用算数运算符,但可以在char类型上使用,是因为Java中的char类型本质上是int型的一个子集; (8)如果一个表达式中同时包含了几个加法和减法运算,那么操作运算符按照从左到右的顺序求值; 2.3.3关系运算符 关系运算符用来比较两个数据,确定一个操作数与另一个操作数之间的关系,即进行关系运算,关系运算符如表2.9所示。返回布尔类型的值为true或false。若关系是真实的,关系表达式会生成true(真);若关系不真实,则生成false(假)。 关系运算符包括小于(<)、大于(>)、小于或等于(<=)、大于或等于(>=)、等于(==)以及不等于(!=)。等于和不等于适用于所

20、有的数据类型,但是其他的关系运算符不适用于boolean类型。 表2.9 关系运算符 运算符 名称 示例 说明 > 大于 a>b a大于b >= 大于等于 a>=b a大于等于b < 小于 a、>=的优先级相同,而且按照从左到右的顺序结合。两个相等性操作“==”和“!=”运算符具有相同的优先级,但要比其他关系运算符的优先级低; (2)不能在两个浮点数之间作“等于”比较

21、因为浮点数使用二进制表达后不是精确值; (3)切记不可将相等性运算符“==”同赋值运算符“=”混淆。按照传统的逻辑,相等性运算符应该被读为“等于”。相反,赋值运算符应该读成“获得”、“获得……的值”或者“被赋予值……”。 例如: 6>5; //结果为true 6.5>5; //结果为true ‘x’==’y’; //结果为false true>false; //错误,boolean型数据只能比较==或!=,不能比较大小 例2.4 ReOption.java public class ReOpti

22、on{ public static void main(String[] args){ int a,b; boolean c,d,e; a=1; b=2; c=(a>=b); d=(a!=b); e=(a==b); System.out.println("c="+c); System.out.println("d="+d); System.out.println("e="+e); System.out.println("c!=d"+(c!=d)); System.out.println("c==d"+(c==d)); } } 输出结果: c=false

23、 d=true e=false c!=dtrue c==dfalse 2.3.4逻辑运算符 布尔逻辑运算符用来连接关系表达式,对关系表达式的值进行布尔逻辑运算,由关系表达式加布尔逻辑运算符构成了布尔逻辑表达式。布尔逻辑运算符共有三种,即逻辑与(&&)、逻辑或(||)和逻辑非(~),其操作结果也都是布尔型的,如表2.10所示。 表2.10 布尔逻辑运算符 A B a&&b a||b !a False False false false true False True false true true True False false tru

24、e false True True true true false 注意: (1)“&”与“&&”虽然名称相同,但功能有细微差别,“&”与“|”在运算时,符号两边的表达式都进行计算之后才得出值,而“&&”与“||”在运算时,如果运算符左边的值决定整个表达式的值,运算符右边的表达式不再计算。如对于a&&b,如果a为“假”,则不再计算b的值,而得到a&&b的值为“假”。而对于a&b,分别计算a和b之后,再计算a&b的值是“真”还是“假”; (2)如果想要在两个条件都为真的前提下才能选择一个特定的执行路径,就使用逻辑运算符“&&”。在包含“&&”运算符的表达式中,首先求得是“&

25、运算符左边的简单条件,如果左侧的值为“真”,才会继续对右侧进行求值。只有“&&”的左、右侧的结果都为真时,才执行下一条语句,否则将跳过; (3)“||”运算符是在两个条件中只要有一个为“真”的情况下,整个表达式的值就为“真”; (4)“&&”运算符的优先级要比“||”运算符高。两个运算符的结合顺序都是从左到右进行的; (5)“!”运算符用于逆转条件。不同于“&&”运算符和“||”运算符的是,“!”运算符只要求一个操作数;而前面两个运算符都要同时又两个操作数。也就是说,“&&”和“||”均为双目运算符,“!”是单目运算符。 程序2.5 LogicalOption1.java imp

26、ort java.util.*; public class LogicalOption1{ public static void main(String[] args) { Random rand = new Random(); int i = rand.nextInt() % 100; int j = rand.nextInt() % 100; prt("i = " + i); prt("j = " + j); prt("i > j is " + (i > j)); prt("i < j is " + (i < j)); prt("i >= j is " + (i >=

27、j)); prt("i <= j is " + (i <= j)); prt("i == j is " + (i == j)); prt("i != j is " + (i != j)); // Treating an int as a boolean is // not legal Java //prt("i && j is " + (i && j)); //prt("i || j is " + (i || j)); //prt("!i is " + !i); prt("(i < 20) && (j < 20) is "+ ((i < 20) &&

28、j < 20)) ); prt("(i < 20) || (j < 20) is "+ ((i < 20) || (j < 20)) ); } static void prt(String str) { System.out.println(str); } } 输出结果: i = -4 j = 96 i > j is false i < j is true i >= j is false i <= j is true i == j is false i != j is true (i < 20) && (j < 20) is false (i < 20) |

29、 (j < 20) is true 程序2.6 LogicalOption2.java public class LogicalOption2{ public static void main(String[] args){ int x=2,y=3; boolean t1,t2,t3; t1=x

42、i: " + n1.i +", n2.i: " + n2.i); n1 = n2; System.out.println("2: n1.i: " + n1.i +", n2.i: " + n2.i); n1.i = 27; System.out.println("3: n1.i: " + n1.i +", n2.i: " + n2.i); } } 输出结果: 1: n1.i: 9, n2.i: 47 2: n1.i: 47, n2.i: 47 3: n1.i: 27, n2.i: 27 程序2.10 AssignmentOption2.java class Numb

43、er{ int i; } public class AssignmentOption2{ public static void main(String[] args){ Number n1 = new Number(); Number n2 = new Number(); n1.i = 9; n2.i = 47; System.out.println("1: n1.i: " + n1.i +", n2.i: " + n2.i); n1.i = n2.i; System.out.println("2: n1.i: " + n1.i +", n2.i: " + n2.i);

44、 n1.i = 27; System.out.println("3: n1.i: " + n1.i +", n2.i: " + n2.i); } } 输出结果: 1: n1.i: 9, n2.i: 47 2: n1.i: 47, n2.i: 47 3: n1.i: 27, n2.i: 47 程序2.11 AssignmentOption3.java public class AssignmentOption3{ public static void main(String[] args){ int a,b; a=5; b=4; System.out.pri

45、ntln("a="+a+",b="+b); a=b; System.out.println("a="+a+",b="+b); a=3; System.out.println("a="+a+",b="+b); } } 输出结果: a=5,b=4 a=4,b=4 a=3,b=4 2.3.7条件运算符 条件运算符(?:)是一个特殊的操作符,它支持条件表达式。即一个简单的双重选择if……else语言的简缩。条件运算符为三元运算符,它的一般形式为: expression?statement1:statement2; 即:表达式?语句1:语句2; 其中表达式expre

46、ssion的值应该为一个布尔值,如果该值为true,则执行语句statement1,否则执行语句statement2,而且语句statement1和statement2需要返回到相同的数据类型,该类型不能是void。例如: int x=1,y=2,z=3; int i=x<0?y:z; 该例子中,如果x<0,则i=2,否则i=3。 如果要通过测试某个表达式的值来选择两个表达式中的一个时,用条件运算符来实现是一种简便的方法,这样它就可以实现条件语句的功能。 例2.12 ConditionOption.java //条件运算实例。 public class ConditionOp

47、tion{ public static void main(String[] args){ int x=1,y=2,z=3; int i=x<0?y:z; System.out.println("i="+i); if(x<0) i=y; else i=z; System.out.println("i="+i); } } 输出结果: i=3 i=3 2.3.8其他运算符 Java语言还包括其他一些运算符,如分量运算符“.”,实例运算符“instanceof”,内存分配运算符“new”,强制类型转换运算符“(类型)”,方法调用运算符“()”,取数组元素运算符“[]”。

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2025 宁波自信网络信息技术有限公司  版权所有

客服电话:4009-655-100  投诉/维权电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服