项目3 3.1 算术运算符与算术表达式_第1页
项目3 3.1 算术运算符与算术表达式_第2页
项目3 3.1 算术运算符与算术表达式_第3页
项目3 3.1 算术运算符与算术表达式_第4页
项目3 3.1 算术运算符与算术表达式_第5页
已阅读5页,还剩29页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

Java程序设计语言概述3算术运算符与算术表达式3算术运算符与算术表达式

运算‌是计算机程序设计的核心功能之一,也是所有高级程序设计语言实现逻辑表达的基础能力。这里的“运算”并非仅限于简单的算术计算,而是指程序通过‌运算符‌对数据(如数值、布尔值、内存地址等)施加特定操作,以完成数学推理、逻辑判断或状态转换的完整过程。Java语言严格遵循这一设计理念,提供了‌功能完备的运算符体系‌,覆盖从基础数值处理到复杂逻辑控制的全场景需求。3算术运算符与算术表达式‌算术运算符‌(+、-、*、/、%)负责数值计算,例如表达式(a+b)*2实现数值的叠加与倍增;‌逻辑运算符‌(&&、||、!)组合布尔表达式,构建复杂判断逻辑;‌赋值运算符‌(=、+=等)实现变量赋值与运算赋值的复合操作;‌关系运算符‌(==、>、<=等)用于比较数据间的大小或相等性,返回布尔值驱动条件分支;‌位运算符‌(&、|、<<等)直接操作二进制位,适用于硬件级优化和掩码处理;‌三目运算符‌(?:)以简洁语法实现条件赋值,例如max=(a>b)?a:b。Java运算符按功能分类3算术运算符与算术表达式

此外,Java通过‌运算符优先级规则‌(如乘除先于加减)和‌结合性规则‌(左结合或右结合)确保复杂表达式按预期顺序求值。程序员可通过括号显式指定优先级,例如(a+b)*(c-d)。这些运算符共同构成了Java程序的基础运算框架,既支持数学计算,也服务于流程控制、数据转换等高级功能,最终实现程序逻辑的精确表达与高效执行。01算术运算符与算术表达式01算术运算符与算术表达式1.基本算术运算符/除法%‌取余

计算两个操作数的积,如2*6结果为12‌。

返回除法后的余数,如17%5结果为2‌。计算两个操作数的商。若操作数为整数,结果为整数(如15/3得5);若含浮点数,结果为浮点数(如6.0/4得1.5)‌。

计算两个操作数的差,如10-4结果为6‌。

计算两个操作数的和,如5+3结果为8‌。+‌加法*‌乘法-‌减法01算术运算符与算术表达式2.特殊算术运算符(自增/自减)

‌前缀式(如++a)‌:先增减再使用变量值‌34。inta=5;intb=++a;//a=6,b=6后缀式(如a++)‌:先使用变量值再增减‌34。inta=5;intb=a++;//a=6,b=5自增(++)和自减(--)为单目运算符,用于对变量值进行

±1操作,分为‌前缀式‌和‌后缀式‌:‌注意‌:自增/自减仅适用于变量,不可直接操作数值(如5++非法)‌45。01算术运算符与算术表达式‌‌表达式‌是由一系列运算符和操作数组成的序列,用于表示一个值或一个操作。表达式的作用是在编程语言中实现计算、判断、赋值、调用等功能‌。在Java中算术表达式由运算符、操作数(变量、常量)及括号组成,如(a+b)*2‌。

操作数可以是整数(int、long)、浮点数(float、double)或字符(char,以ASCII值参与计算)‌。算术表达式的运算有类型自动提升规则,若表达式含多种数据类型,结果将自动提升为精度更高的类型。如:byte、short、char→

自动提升为int‌。含浮点数

整体提升为float或double。3.算术表达式与运算规则01算术运算符与算术表达式‌‌‌整数除法的截断特性‌整数相除时结果舍去小数部分,如7/2得3,而非3.5‌。

‌浮点数运算的精度问题‌浮点数计算可能存在精度误差,如以下代码:doublea=0.1;doubleb=0.2;doublesum=a+b;System.out.println(sum);//输出0.30000000000000004(而非预期的0.3)

‌取余运算的符号规则‌结果的符号与被除数一致,如-17%5得-2,17%-5得2:4.注意事项02关系运算符与关系表达式02关系运算符与关系表达式

关系运算符‌(RelationalOperators)用于比较两个操作数之间的关系,返回布尔值(true或false),是程序逻辑判断的核心工具。Java支持以下6种关系运算符:

关系表达式‌是由关系运算符连接的表达式,其结果为布尔类型(boolean),常用于条件判断、循环控制等场景。如:inta=10,b=5;booleanresult1=a>b;//truebooleanresult2=a==10;//truebooleanresult3=b<=0;//false01算术运算符与算术表达式

支持数值类型(int、double等)、字符(char)之间的比较。charchar1='A';charchar2='B';charchar3='a';booleanresult1=char1<char2;//'A'(Unicode值为65)小于’B’(Unicode值为66)。booleanresult2=char1<char3;//'A'(Unicode值为65)小于’a’(Unicode值为97),小写字母的编码值大于大写字母。

在Java中,字符实际上是通过Unicode编码来表示的,因此比较字符实际上是按照Unicode值来进行的。

布尔值(boolean)只能参与==和!=比较。booleanflag1=true,flag2=false;System.out.println(flag1==flag2);//false:注意事项:1.操作数类型兼容性01算术运算符与算术表达式

2.浮点数比较的精度问题

浮点数的精度误差可能导致意外的比较结果,需使用误差范围或BigDecimal类处理。doublex=0.1+0.1+0.1;doubley=0.3;System.out.println(x==y);//false(实际x为0.30000000000000004)注意事项

3.字符串比较的问题‌

在Java中,不能直接使用关系运算符(如==、!=、>、<)来比较字符串的大小‌。字符串在Java中是一个对象,使用关系运算符进行比较时,实际上比较的是字符串对象的内存地址,而不是字符串的内容‌。应使用compareTo()方法或compareToIgnoreCase()方法(忽略大小写)来进行字符串比较。03逻辑运算符与逻辑表达式02关系运算符与关系表达式1.逻辑运算符分类与功能Java的逻辑运算符用于连接布尔表达式,返回布尔值(true或false)。主要包含以下4类:01算术运算符与算术表达式

逻辑表达式‌是由逻辑运算符连接的布尔表达式,操作数必须为布尔类型。常用于条件判断和循环控制。逻辑运算符均遵循‌从左到右‌的结合顺序,有优先级区别‌,其优先级顺序为逻辑非(!)

逻辑与(&&)

逻辑或(||)。其核心特性如下:

短路特性(Short-Circuit)‌‌&&短路与‌:若左侧为false,右侧表达式不再执行‌。booleanresult=(5<3)&&(10/0==0);//左侧为false,右侧不执行,无报错‌||短路或‌:若左侧为true,右侧表达式不再执行。booleanresult=(5>3)||(10/0==0);//左侧为true,右侧不执行,无报错

非短路运算符‌&(按位与)和|(按位或)也可以用于逻辑运算,即使可确定结果,仍会执行两侧表达式,可能引发异常。booleanresult=(5>3)&(10!=0);//左侧为false,右侧为true,无报错booleanresult=(5<3)&(10/0==0);//抛出ArithmeticException2.逻辑表达式与短路特性04位运算符04位运算符1.位运算符定义与分类位运算符‌直接操作整数类型(byte、short、int、long)的二进制位,适用于底层数据操作、性能优化及特定算法场景。Java支持以下7种位运算符:04位运算符‌按位与(&)‌,规则‌全1得1,有0得0。inta=5;//00000101intb=3;//00000011intc=a&b;//结果00000001→

十进制1

按位或(|)‌,‌规则有1得1,全0得0。‌inta=5;//00000101intb=3;//00000011intc=a|b;//00000111→

十进制7

‌按位异或(^)‌,‌规则相同为0,不同为1。任何数与自身异或结果为0,a^a=0,异或运算可交换:a^b=b^a。‌inta=5;//00000101intb=3;//00000011intc=a^b;//00000110→

十进制6

按位非(~)‌,‌规则0变1,1变0。结果依赖数据类型的位数(如int为32位,byte为8位)。‌inta=5;//00000101intc=~a;//11111010(补码表示,实际值为-6)2.基本位运算符04位运算符‌inta=16;//00010000intb=a>>>2;//00000100→

十进制4intc=-8;//补码:11111000intd=c>>>2;//001111100000...(高位补0,结果很大正数)无符号右移(>>>),‌规则‌:整体右移指定位数,左侧补0(无论正负)。‌inta=8;//00001000intb=a<<2;//00100000→

十进制32左移(<<)‌,‌规则‌:整体左移指定位数,右侧补0。‌inta=16;//00010000intb=a>>2;//00000100→

十进制4intc=-8;//补码表示:11111000intd=c>>2;//11111110→

十进制-2(保留符号位)带符号右移(>>)‌,‌规则‌:整体右移指定位数,左侧补符号位。0201033.位移运算符04位运算符4.注意事项‌操作数限制位运算符仅支持整数类型(byte、short、int、long),不支持boolean、float、double。对byte和short类型运算时,会隐式转换为int。

‌‌负数处理‌负数以补码形式存储,按位非(~)或右移运算可能产生意外结果:inta=-5;//补码:11111011intb=a>>1;//11111101→

十进制-3(保留符号位)intc=a>>>1;//01111101...→

很大正数05赋值运算符与赋值表达式05赋值运算符与赋值表达式1.赋值运算符的定义与分类‌赋值运算符‌用于将右侧操作数的值赋给左侧变量,是Java程序中最基础的运算符。Java支持以下两类赋值运算符:完整的复合赋值运算符包括:+=、-=、*=、/=、%=、<<=、>>=、>>>=、&=、|=、^=。05赋值运算符与赋值表达式inta,b;a=5;//表达式值为5b=(a=10)*2;//a=10,表达式值10→b=20System.out.println(a=15);//输出15(赋值表达式值)赋值表达式的值赋值表达式本身具有值,其值为‌赋值后左操作数的值‌,因此可参与其他运算:inta;a=10;//正确intb=a*2;//正确(声明时赋值)5=a;//编译错误!左操作数不是变量基本赋值(=)‌,左操作数必须是变量(不能是字面量或常量)。右操作数可以是变量、字面量或表达式。intnum=5;num+=3.14;//等价于num=(int)(num+3.14)→num=8复合赋值(+=等)‌,隐含类型转换:即使右侧类型与左侧不严格匹配,也会自动转换类型。0201032.赋值表达式与运算规则06三目运算符06三目运算符

三目运算符‌是Java中唯一的三元运算符,用于简化条件判断和赋值操作。三目运算符是‌表达式‌(有返回值),而非语句,因此可直接参与赋值或作为方法参数。其语法结构为:条件表达式?表达式1:表达式2

三目运算符的执行逻辑是首先计算条件表达式的布尔值,若结果为true,返回表达式1的值,若结果为false,返回表达式2的值。两个分支(表达式1和表达式2)的结果类型必须兼容,类型相同或存在自动类型转换。inta=5;doubleb=3.14;doubleresult=(a>0)?a:b;//结果为result=5.007运算符的优先级及运算符综述07运算符的优先级及运算符综述

在Java中,运算符的优先级决定了它们在表达式中的执行顺序。了解和掌握这些优先级是非常重要的,因为它们可以影响表达式的计算结果。Java中的运算符优先级遵循一定的规则,这些规则类似于大多数其他编程语言。在学习的过程中大家需要简单了解运算符的优先级,但没必要去记忆,在编写程序时如果不清楚所写运算符的优先级尽量使用括号运算符()来实现想要的运算次序,以避免难于阅读或计算顺序含混不清。运算符的结合性(Associativity)指的是当运算符作用于多个操作数时,它们是如何组合或连接的。运算符的结合性决定了操作的顺序。在Java中,大多数运算符都是左结合性的(left-associative),这意味着它们从左到右进行运算。然而,也存在一些运算符是右结合性的(right-associative)。比如算术运算符的结合性是从左到右,24+5-3相当于(25+5)-3;而逻辑否运算符和赋值运算符的结合性是从右到左,!!x相当于!(!x),x=5+6相当于x=(5+6)。08项目演练08项目演练案例名称:校园「绿色能量」环保积分系统‌‌场景‌:设计一个校园环保积分小程序,通过多种运算符计算学生参与环保行为的奖励积分,培养学生养成节约资源地习惯,树立可持续发展的思想‌。‌核心逻辑设计‌:

‌基础积分计算‌:垃圾分类、步行代替乘车等行为获得基础积分

‌动态加成规则‌:

‌连续打卡奖励‌:连续3天参与,积分×2

‌环保知识答题‌:答对随机题目触发额外积分

‌资源节约彩蛋‌:节省水电量超过阈值,积分叠加06项目演练importjava.util.Random;publicclassGreenCampusOperatorDemo{publicstaticvoidmain(String[]args){//基础参数(体现现实意义)intbaseRecyclePoints=10;//单次垃圾分类基础分(+)intdaysConsecutive=4;//连续打卡天数(>=)booleanisSaveEnergy=true;//本月是否节约水电(&&)intenergySaved=150;//节省电量(单位:度)(%)Randomrand=newRandom();//=====运算符实战:积分计算=====//1.基础积分(乘法、复合赋值)inttotalPoints=baseRecyclePoints*3;//本月参与3次分类//2.连续打卡奖励(逻辑与、比较、三目运算符)totalPoints*=(daysConsecutive>=3&&daysConsecutive<=7)?2:1;//3.节能加分(取模、位与、复合赋值)if(isSaveEnergy){intenergyBonus=(energySaved%100)+(rand.nextInt(50)&0b1111);//趣味随机值totalPoints+=energyBonus;//复合赋值(+=)}//4.环保答题彩蛋(位异或、自增)intquizAnswer=rand.nextInt(2)^0b1;//生成0或1(^异或)totalPoints+=(quizAnswer==1)?20:-5;//答对+20,答错-5

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论