Java编程基础及应用运算符表达式和语句_第1页
Java编程基础及应用运算符表达式和语句_第2页
Java编程基础及应用运算符表达式和语句_第3页
Java编程基础及应用运算符表达式和语句_第4页
Java编程基础及应用运算符表达式和语句_第5页
已阅读5页,还剩57页未读 继续免费阅读

下载本文档

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

文档简介

第三章运算符、表达式和语句3.1运算符与表达式的分类3.2语句以及基本控制结构3.3

本章小结3.1运算符的表达式与分类对数据进行加工和处理称为运算,表示各种运算的符号称为运算符,参与运算的数据称为操作数。运算符和操作数的数据类型必须匹配才能进行相应的运算。按照运算类型,可以将运算符分成以下几类:算术运算符,关系运算符,条件运算符,逻辑运算符,赋值运算符,其它运算符。表达式是由运算符、操作数和方法调用按照语言的语法构造而成的符号序列。表达式可用于一个公式的计算,为变量赋值以及控制程序的执行流程。3.1.1算术运算符Java语言支持所有的浮点型和整数型数据进行各种算术运算。算术运算符用于完成数学上的加、减、乘、除四则运算。算术运算符包含一元和二元运算符两类。二元运算符包括+(加)、-(减)、*(乘)、/(除)和%(取余),其中前四个运算符既可以用于整数型数据,也可以用于浮点型数据,而“%”仅用于整数型数据,求两个操作数相除后的余数。3.1.1算术运算符运算符用例功能+a+b求a与b之和-a-b求a与b之差*a*b求a与b之积/a/b求a与b之商%a%b求a与b相除的余数

算术运算符的使用基本上与数学中的加减乘除一样,也是先乘除后加减,必要时加上括号表示运算的先后顺序。二元运算符的用法如表3-1。表3-1二元算术运算符3.1.1算术运算符◆一元运算符包括++(自加)、--(自减)、-(负号)。只能用于整数类型的变量,而不能用于常量或表达式。“++”和“--”既可以出现在变量的左边,也可以出现在变量的右边。◆前置运算:++、--位于操作数之前,如++x;--x;先改变变量的值后引用。例如:inti=5,j;j=++i;//结果为i=6,j=6下面我们来看一段简单的代码。3.1.1算术运算符例3.1数字和字符之间的求和,这需要将字符首先转换为相应的ASCLL码值。程序运行结果:763.1.2关系运算符关系运算符用于进行两个操作数之间的比较运算。关系运算符有六种:>(大于)、<(小于)、>=(大于等于)、<=(小于等于)、==(等于)和!=(不等于)。关系运算的结果是布尔类型,即若关系成立,结果值为true;否则,结果值为false。关系运算符的用法如表3-2.结果为数值类型的变量或表达式,可以通过关系运算符形成关系表达式。例如:24>8(x+y+z)>6*x3.1.2关系运算符运算符用例功能>a>b如果a>b成立,结果为true,否则为false<a<b如果a<b成立,结果为true,否则为false>=a>=b如果a>=b成立,结果为true,否则为false<=a<=b如果a<=b成立,结果为true,否则为false==a==b如果a==b成立,结果为true,否则为false!=a!=b如果a!=b成立,结果为true,否则为false表3-2关系运算符3.1.3逻辑运算符逻辑运算符是对布尔类型操作数进行的与、或、非、异或等运算,运算结果仍然为布尔类型。逻辑运算也称布尔运算。(1)逻辑“与”和逻辑“或”逻辑“与”和逻辑“或”运算都是二元运算符,操作数是boolean型的变量或求值结果为boolean型数据的表达式。“&&”的运算法则是:当两个操作元的值都为true时,运算结果为true,否则为false。3.1.3逻辑运算符“||”的运算法则是:当两个操作元的值都是false时,运算结果是false;否则为true。在判断组合条件时,经常使用“&&”和“||”,因为“&&”和“||”具有短路计算功能。所谓的短路计算功能是指在组合条件中,从左至右依次判断条件是否满足,一旦能够确定结果,就立即终止计算,不再进行右边剩余的操作。3.1.3逻辑运算符例如:false&&(a>b)//结果是false(34>21)||(a==b)//结果是true由于false参与“&&”运算,结果必然是false,就不必再计算(a>b)的值;同理,(34>21)的值是true,它参与“||”运算,结果必然为true,也不必再计算后面的(a==b)的值,立即结束运算,提高效率。3.1.3逻辑运算符(2)逻辑“非”逻辑“非”运算的符号是“!”,是单目运算符,操作数在左边。当操作元的值为true时,运算结果为false;反之为true。结合性从左至右。(3)逻辑表达式结果为boolean型的变量或者表达式,可以通过逻辑运算符形成逻辑表达式。例如:22>6&&3<2x!=0||y!=0。3.1.3逻辑运算符例3.2下面看一个小程序:与运算中的两个操作数相对应的位置都为1,结果才为1,否则结果为0。//And.javapublicclassAnd{ publicstaticvoidmain(String[]args){ inta=128; intb=127; System.out.println("a和b逻辑与的结果是:"+(a&b)); }}程序运行结果:a和b逻辑与的结果是:03.1.3逻辑运算符下面分析这个程序:“a”的值是128,转换成二进制就是10000000,而“b”的值是128,转换成二进制就是01111111。根据与运算符的运算规律,只有两个位都是1,结果才是1,可以知道结果就是00000000,即0。3.1.4赋值运算符赋值运算符:=。赋值运算符是双目运算符,左面的操作数必须是变量,不能是常量或表达式。赋值运算的本质是首先计算右面表达式的值,再将表达式的值赋给左边的变量。注意:不要将赋值运算符“=”与等号运算符“==”混淆。赋值运算符看起来是比较简单的,但是需要注意“+=”、“-=”、“×=”、“/=”、“%=”都表示一个符号。3.1.4赋值运算符例3.3试运行以下两个程序,看看结果,并找出区别。你会发现Compare1这个程序出现编译错误,因为s+1得到的结果是int型的,需要改为s+=1(如Compare2.java),这样便不会报错。程序运行结果:53.1.5移位运算符移位运算是对整数型的操作数按二进制的位进行运算,运算结果仍然是整数型数值,分为左移位操作和右移位操作。(1)左移位运算符左移位运算符的符号为“<<”,是二元运算符。左移位运算符左面的操作元称为被移位数,右面的操作数称为移位量。例如:a<<n运算的结果是通过将a的所有位都左移n位,每左移一个位,左边的高阶位上的0或1被移除丢弃,并用0填充右面的低位。3.1.5移位运算符(2)右移位运算符右移位运算的符号为“>>”,是双目运算符。假设a是一个被移位的整型数据,n是移位量。a>>n运算的结果是通过将a的所有位都右移n位,每右移一位,右面的低阶位都被移除丢弃,并用0或1填充左面的高位,a是正数用0填充,负数时用1填充。正数不断右移的最后结果一定是0,而负数不断右移的最后结果是-1。3.1.6位运算符(1)“按位与”运算符“&”是双目运算符,对两个整型数据a、b按位进行与运算,运算结果是一个整型数据c。运算法则是:如果a、b两个数据对应位都是1,则c的该位是1,否则是0。例如:1001001和0101001进行“与”运算,表达如下,1001001&01010010001001

3.1.6位运算符(2)“按位或”运算符“|”是双目运算符。对两个整型数据a、b按位进行或运算,运算结果是一个整型数据c。运算法则是:如果a、b两个数据对应位都是0,则c的该位是0,否则为1.例如:1001001和0101001进行“或”运算,表达如下,1001001|010100111010013.1.6位运算符(3)“按位非”运算符“~”是一元运算符。对一个整型数据a按位进行非运算,运算结果是一个整型数据c。运算法则是:如果a对应位是0,则c的该位是1,否则为0。例如:1001001进行“非”运算表达如下,1001001~01101103.1.6位运算符(4)“按位异或”运算符“^”是双目运算符。对两个整型数据a、b按位进行异或运算,运算结果是一个整型数据c。运算法则是:如果a、b两个数据对应位相同,则c的该位是0,否则是1。例如:1001001和0101001进行“异或”运算,表达如下,1001001^010100111000003.1.7条件运算符条件运算符是一个多元运算符,它的符号是“?:”,需要连接三个操作数,用法如下:a?b:c,要求a的值必须为boolean型数据。运算法则是:当a的值为true时,a?b:c运算的结果是b的值;当a的值是false时,a?b:c运算的结果是c的值。例如:8>2?10:20的结果是10;8<2?10:20的结果是20。3.1.8表达式的类型表达式的类型由运算结果的数据类型决定。根据表达式的数据类型,表达式可以分为3类:算术表达式、布尔表达式和字符串表达式。注意:(1)数据类型之间的转换:当一种数据类型的值赋给另一种数据类型的变量时,就会出现数据类型的转换。3.1.8表达式的类型在整数型和浮点型数据中,可以将数据类型按照精度从高到底排列,如下:double高级别floatlongintshortbyte低级别3.1.8表达式的类型(2)赋值运算中,数据类型的转换规则如下:当低级别的值赋给高级别的变量时,系统自动完成数据类型的转换。例如:floatx=200;//将int类型的值200转换为float类型值200.0当高级别的值赋给低级别的变量时,必须进行强制类型转换。强制类型转换形式为:(类型标示符)待转换的值3.1.8表达式的类型例如:inti;i=(int)26L;//将long类型值26转换成int类型值26,结果i获得int类型值26进行强制类型转换时,可能会造成数据精度丢失。表达式中不同类型数据进行运算时,类型转换规则与赋值运算相似。若双目运算符的两个操作数类型不同,系统首先将低级别的值转换为高级别的值,再进行运算。在有些情况下,需要进行强制类型转换。3.1.8表达式的类型例3.4整数相除,将其结果强制转换为浮点型。程序运行结果:k=3f1=3.0f2=3.253.2语句以及基本控制结构◆语句◆基本控制结构3.2.1语句语句用来向计算机系统发出操作指令。程序由一系列语句组成。Java里的语句主要分为5类:表达式语句、空语句、复合语句、方法调用语句和控制语句。(1)表达式语句Java语言中最常见的语句就是表达式语句。表达式语句的功能是计算表达式的值。分号是语句的分隔符。例如,赋值语句:b=45;3.2.1语句(2)空语句空语句只有分号,没有内容,不执行任何操作。设计空语句是为了语法需要,例如,循环语句的循环体中如果仅有一条空语句,表示执行空循环。(3)复合语句可以用“{“和”}”把一些语句包括起来构成复合语句,一个复合语句也称作一个代码块。例如,{c=a+b;t=c/10;}3.2.1语句当程序中某个位置在语法上只允许一条语句,而实际上要执行多条语句才能完成某个操作时,需要将这些语句组合成一条复合语句。(4)方法调用语句方法调用语句由方法调用加一个分号组成。例如:System.out.println(“HelloWorld”);(5)控制语句控制语句完成一定的控制功能,包括条件分支语句、循环语句和转移语句。3.2.2程序控制结构结构化程序设计的基本思想是采用“单入口单出口”的控制结构,基本控制结构分为3种:顺序结构、分支结构和循环结构。面向过程程序设计和面向对象程序设计是软件设计方法的两个重要阶段,这两种程序设计思想并不是对立的,而是继承和发展的。其中,作为面向过程程序设计精华的结构化程序设计思想仍然是面向对象程和序设计方法的基石。3.2.2程序控制结构1.顺序结构顺序结构的程序设计是最简单的,只要按照需要解决问题的顺序写出相应的语句就行,它的执行顺序是自上而下,依次执行。这种结构的特点是:程序从入口点a开始,按顺序执行所有操作,直到出口点b处,所以称为顺序结构。使用顺序结构可以独立构成一个简单的完整程序,常见的输入、计算、输出三步曲的程序就是顺序结构。例如计算圆的面积,其程序的语句顺序就是输入圆的半径r,计算s=3.14159*r*r,输出3.2.2程序控制结构圆的面积s。不过大多数情况下顺序结构都是作为程序的一部分,与其它结构一起构成一个复杂的程序,例如分支结构中的复合语句、循环结构中的循环体等。顺序结构是我们在设计程序时最常使用的结构流程,因为确实有很多程序基本上都是采用这种自上而下的流程来设计的。这种结构的流程图如图3-1所示。3.2.2程序控制结构开始语句1语句2语句n结束……图3-1顺序结构流程图3.2.2程序控制结构2.选择结构与分支语句程序中有些程序段的执行是有条件的,当条件成立时,执行一些程序段;当条件不成立时,执行另一些程序段,或者不执行。选择结构表示程序的处理步骤出现了分支,它需要根据某一特定的条件选择其中的一个分支执行。选择语句有两种:if语句和switch语句。3.2.2程序控制结构1)if语句if语句是最常用的选择语句,其中的条件用布尔表达式表示。如果布尔表达式的值为true,表示条件满足,执行某一语句;如果布尔表达式的值为false,表示条件不满足,执行另一语句。if语句是单分支、二分支或者多分支的语句。if语句的格式如下:if(布尔表达式)语句1else语句23.2.2程序控制结构说明:(1)如果布尔表达式的值为true,执行语句1;否则执行语句2.其中else子句是可选项,如果没有else子句,在布尔表达式的值为false时,什么也不执行,形成单分支选择。(2)语句1和语句2可以是一条简单语句,也可以是复合语句或其它构造语句。3.2.2程序控制结构例3.5根据if语句进行判断,如果a>3,输出a++,否则输出a--。程序运行结果:23.2.2程序控制结构2)if语句嵌套程序有时需要根据多条件再选择某一操作,这时就可以使用if-elseif-else语句。if-elseif-else语句是Java中的一条语句,由一个“if”、若干个“else-if”和一个“else”与若干个复合语句按一定规则构成。语句的格式如下:3.2.2程序控制结构if(表达式1){若干语句}elseif(表达式2){若干语句}……elseif(表达式n){若干语句}else{若干语句}3.2.2程序控制结构一条if-elseif-else语句的作用是根据不同的条件产生不同的操作,执行规则为:if以及elseif后面的括号内的表达式的值必须是boolean型的。该语句执行时,首先计算if后括号中的表达式的值,如果该表达式的值为true,则执行紧跟着的复合语句,然后就结束整个语句的执行;如果if后括号中的表达式的值为false,就依次再计算后面的elseif的表达式的值,直到出现某个表达式的值为true为止,然后执行该elseif后面的复合语句,结束整个语句的执行。如果所有的表达式的值都是false,就执行else后面的复合语句,结束整个语句的执行。3.2.2程序控制结构例3.6使用if-else嵌套语句编写程序。程序运行结果:x=5y=53.2.2程序控制结构3)开关语句当要从多个分支中选择一个分支去执行时,虽然可以使用嵌套的if语句,但是当嵌套层太多时会程序的可读性差。为此,java提供了多分支选择语句,即switch语句,switch语句能够根据给定表达式的值,从多个分支中选择一个分支来执行。3.2.2程序控制结构它的格式如下:switch(表达式){case常量1:语句序列1;break;case常量2:语句序列2;break;………case常量n:语句序列n;default:语句序列n+1;break;}3.2.2程序控制结构注意:(1)表达式的数据类型必须是整型或者字符型。Break语句和default语句是可选项。(2)switch语句首先计算表达式的值,如果表达式的值和某个case后面的常量值相同,就执行该case里的若干个语句,直到碰到break语句为止。如果某个case子句中没有break语句,一旦表达式的值与该case后面的常量值相等,在执行完该case子句中的语句序列后,继续执行后续的case子句中的语句序列,直到遇到break语句为止。如果没有一个常量值与表达式的值相等,则执行default子句中的语句序列;如果没有default子句,switch语句不执行任何操作。3.2.2程序控制结构例3.7通过命令行输入1-7之间的一个整数,输出相应的周一到周日的英文单词。如果在命令行输入:1程序运行程序,将1传递给args[0],则输出结果:

Sunday3.2.2程序控制结构例3.8根据系统输入的数值,运行相应的程序代码。如果在命令行输入:3程序运行程序,将2传递给x,则输出结果:BlockCn=2result=83.2.2程序控制结构3.循环结构循环结构表示程序反复执行某个或某些操作,直到某条件为假(或为真)时才可终止循环。在循环结构中最主要的是:什么情况下执行循环?哪些操作需要循环执行?循环结构的基本形式有两种:当型循环和直到型循环,而什么情况下执行循环则要根据条件判断。Java提供了3种循环结构,包括while语句、do…while语句和for语句。他们的共同点就是根据给定条件来判断是否执行指定的程序段(循环体)。如果满足执行条件,就继续执行循环体,否则就不再执行循环体,结束循环语句。另外,每种语句都有自己的特点。在实际应用中,应该根据具体问题,选择合适的循环语句。3.2.2程序控制结构1)while循环while语句的格式为:while(表达式){循环体}while语句由关键字while、括号中的一个值为boolean型数据的表达式和一个复合语句组成,其中的复合语句称作循环体,循环体只有一条语句时,大括号“{}”可以省去,但是最好不要省去,这样可以增加程序的可读性。表达式称作循环条件。3.2.2程序控制结构while语句的执行规则是:(1)计算表达式的值,如果该值为true,就进行(2),否则就进行(3)。(2)执行循环体,再进行(1)(3)结束while语句的执行。可以看出来while语句的特点是:先判断,后执行。如果一开始,布尔表达式的值就是false,则循环体一次也不执行,所以while语句的最少执行次数为0。3.2.2程序控制结构例3.9阶乘的计算公式为n!=n*(n-1)*(n-2)*…..*3*2*1,试计算9!。程序运行结果:9!=362880.0拓展练习:使用for循环编写9!3.2.2程序控制结构2)do…while语句do…while语句的语法如下:do{循环体}while(表达式);do…while语句的执行规则是:执行循环体,计算布尔表达式的值,若值为true,再执行循环体,形成循环,直到布尔表达式的值变为false,结束循环,执行do…while语句的下一条语句。可以看出,do…while循环语句的特点是先执行,后判断。所以,do…while语句的循环体至少执行一次。3.2.2程序控制结构例3.10使用do-while循环计算1+2+3+……+99。程序运行结果:sum=49503.2.2程序控制结构3)for循环for语句是一种使用比较频繁的循环语句,for语句的一般格式为:for(表达式1;表达式2;表达式3){循环体}注意:(1)表达式1的作用是给循环控制变量(以及其他变量)赋初值;表达式2为布尔类型,给出循环条件;表达式3给出循环控制变量的变化规律,通常是递增或递减的。(2)循环体可以使一条简单

温馨提示

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

评论

0/150

提交评论