java程序设计第2讲.ppt

上传人:sccc 文档编号:5376029 上传时间:2023-07-01 格式:PPT 页数:73 大小:1.26MB
返回 下载 相关 举报
java程序设计第2讲.ppt_第1页
第1页 / 共73页
java程序设计第2讲.ppt_第2页
第2页 / 共73页
java程序设计第2讲.ppt_第3页
第3页 / 共73页
java程序设计第2讲.ppt_第4页
第4页 / 共73页
java程序设计第2讲.ppt_第5页
第5页 / 共73页
点击查看更多>>
资源描述

《java程序设计第2讲.ppt》由会员分享,可在线阅读,更多相关《java程序设计第2讲.ppt(73页珍藏版)》请在三一办公上搜索。

1、2023/7/1,1,Java语言程序设计,河南科技专修学院,辛凤凡,2023/7/1,2,第2章 运算和语句,2023/7/1,3,本章总体纲要,数据运算语句Java程序实例,2023/7/1,4,数据运算,赋值运算(简单 复合)算术运算自增自减运算(单目)关系运算逻辑运算条件运算(三目)其他运算,2023/7/1,5,Java运算符,赋值类运算符算术运算符自增自减运算符关系运算符布尔逻辑运算符条件运算符其他运算符(位运算符、移位),2023/7/1,6,1.赋值类运算符,简单赋值运算符不是相等()int j=3;double y=2.0;y=j;(类型自动转换)从简单到复杂的转换赋值运算也

2、有值 y=j=3;结合性:自右至左,2023/7/1,7,1.赋值类运算符,复合赋值类运算符包括:+=、-=、*=、/=、,2023/7/1,8,2.算术运算符,算术运算符包括:(取正),(取负)(单目运算)+,-,*,/,%(双目运算)注意事项:当操作数是定点类型数据时,应当注意运算是否会溢出 int i=123456;i=i*i;/溢出整数除法:截去余数7/5 结果为 1考虑除数是否可能为0或很小的数,2023/7/1,9,取模:返回余数,可以对定点或浮点数进行取模运算7%5 结果为 2;15.25%(-0.5)结果为0.25,2023/7/1,10,练习,-7/5=-7%5=7%-5=5

3、.5%1.0=,-1-220.5,2023/7/1,11,3.自增自减运算(单目),自增(+)和自减(-):操作数必须是变量;有前置和后置两种运算 int n=3;int i=n+,j=n-;/i=3,j=4,n=3 int k=+n,m=-n;/k=4,m=3,n=3,2023/7/1,12,3.自增自减运算,前缀 和后缀,对变量本身,效果相同;但表达式的值不相同。i=5;+i;i-;运算对象只能是变量,不能是常量或表达式,如:7+;(i+j)都是非法的。,2023/7/1,13,4.关系运算符,关系运算符包括:、=、=和!=,关系运算生成一个布尔结果。例如:1 2;/false3.5!=1

4、;/true 51.5=23.0;/true540=654;/true24=3*8;/trueboolean test1=(10 10);/test1=false;,2023/7/1,14,注意事项:计算机在表示浮点数以及浮点数运算时存在误差,建议不要直接比较两个浮点数是否相等,而通常改为判断这两个浮点数是否在一定的误差允许范围之内。例如:(15.2%0.5)=0.2/结果为false(0.2-1.0e-5 15.2%0.5)&(15.2%0.5 0.2+1.0e-5),2023/7/1,15,5.逻辑运算符,逻辑运算的操作数必须是布尔型,结果也是布尔型。可以有3种基本操作:与(&)、或(|)

5、、非(!)。与C或C+不同的是,不可将一个非布尔值当作布尔值在逻辑表达式中使用。,2023/7/1,16,短路规则(&和|),短路规则:一旦能够明确无误的确定整个表达式的值,就不再计算表达式余下的部分了。因此,整个逻辑表达式靠后的部分可能不会计算。比较:(birthday=true)&(+age=65)(birthday=true)|(+age=65),2023/7/1,17,短路规则(&和|),int a,b,c;a=b=c=1;boolean w;w=+a1|+b+c;a?b?c?w?答案:a=2,b=1,c=1,w=true;,2023/7/1,18,6.条件运算符,条件运算符是一个三目

6、运算符,一般形式为:逻辑表达式?表达式1:表达式2例如:int i=5;int k=(i=0)?1:-1;条件运算符的结合性为“自右至左”。例如:x y?x:u v?u:v 等价于 x y?x:(u v?u:v),2023/7/1,19,7.其他运算符,位运算 移位运算运算的优先级()类型强制转换运算,2023/7/1,20,位运算符和移位,位运算符包括:&、|、移位运算符有:、和 带符号右移:左端空出的位填原符号位不带符号右移(逻辑右移):左端空出的位填0(C或C+中无此运算符)位运算操作是:先将整数写成二进制形式(补码),然后按位操作,最后产生一个新的数注意:只用于定点类型数据(整型),2

7、023/7/1,21,注意事项:Java将布尔类型作为一种单比特值(bit 位)对待,可以对它执行按位“与”(&)、按位“或”(|)和按位“异或”()运算。对于布尔值,按位操作具有与逻辑操作相同的效果,只是&和|采用“短路规则”而&和|则不采用。,2023/7/1,22,int before=20;/apple笔记本市场份额double rise=9.8;/增长的份额int now=before+rise;/现在的份额,int now=before+(int)rise;,去年Apple笔记本所占的市场份额是20,今年增长的市场份额是9.8,求今年所占的份额?,编译出错:不能完成自动类型转换,(

8、类型名)表达式,强制类型转换,int b=(int)10.2;double a=10;int c=(int)a;,其它运算符包括:(类型)、()、.、.,更改为,强制类型转换,2023/7/1,23,算符优先,当一个表达式中存在多个运算符时,运算符的优先级决定了个部分的计算顺序。Java对运算符的优先级做了特别规定。程序员经常会忘记运算符的优先规则,所以应该用()来明确规定计算顺序使表达式更容易理解。例如:a+b+c/3(a+b+c)/3,2023/7/1,24,C+中引入了运算符重载,使得c+程序员可以为几乎所有运算符增加功能,而Java认为此项特性过于复杂,所以Java程序员不能像C+程序

9、员那样实现自己的重载操作符。但是+和+=操作符除了一般算术运算的用途外,还可用于连接不同的字符串。在C和C+中,sizeof()运算符可以告诉我们为数据分配的字节数,C和C+需要这个运算符的最大原因是为了“移植”,不同数据类型在不同机器上可能有不同的大小,在进行一些与存储空间有关的运算时,程序员必须获悉哪些类型具体有多大。而Java则不需要,因此,Java中没有sizeof()运算符。,2023/7/1,25,本章总体纲要,数据运算语句Java程序实例,2023/7/1,26,语句,基本语句复合语句控制结构语句(顺序、选择、循环),2023/7/1,27,基本语句,表达式语句 k=k+2;空语

10、句;break语句 break;用于循环或选择continue语句 continue;同上return语句 return;return 表达式;该语句的执行将结束方法的执行,只能出现在方法体中,2023/7/1,28,复合语句,用花括号引起来的两条或两条以上语句,顺序执行但作为一个整体。在复合语句中可以定义自己专用的临时变量,2023/7/1,29,控制结构,if语句和if-else语句switch语句 for语句 while语句 do-while语句 break语句 continue语句return语句,2023/7/1,30,true和false,选择或循环结构中,都根据布尔表达式的真或假

11、来决定执行路径。注意:Java不允许将一个数字作为布尔值使用,这与c或c+不同。例如:当要表达“如果a不等于0”这个条件 不能写作 if(a)而要写作 if(a!=0),2023/7/1,31,if语句,if语句的格式是:if(布尔表达式)语句或if(布尔表达式)一条或多条语句例如:if(score=60)System.out.println(Passed);/Here could be a statement block.,2023/7/1,32,if-else语句,if-else语句的格式是:if(布尔表达式)语句1或语句块1else 语句2或语句块2例如:if(score=60)Syst

12、em.out.println(Passed!);else System.out.println(Failed!);,2023/7/1,33,if-else语句,标准嵌套if-else控制结构可实现多路选择,用在想从多个候选项中选择且只选出一项时。例如:if(score90)System.out.println(“A”);else if(score=80)System.out.println(“B”);else if(score=60)System.out.println(“C”);else System.out.println(“F”);,2023/7/1,34,if-else语句,当使用if

13、-else嵌套实现多分支选择结构时,注意if和else的匹配采用最近原则,即else子句与最近的前一个未匹配的if子句配对。例如:if(condition1)if(condition2)system.out.println(“One”);else system.out.println(“Two”);缩进可以提高程序的可读性,但不影响程序的逻辑。,2023/7/1,35,switch(表达式)case 常量 1:语句组1;break;case 常量 2:语句组2;break;default:语句;,什么是switch结构,计算表达式的值,如果等于常量1,如果等于常量2,如果没有找到匹配的值,20

14、23/7/1,36,switch语句,switch表达式的数据类型可以是基本类型char、byte、short、int;或是这四种基本类型相对应的包装类java.lang.Character、java.lang.Byte、java.lang.Short、java.lang.Integer或enum枚举类型。跟在case后的必须是常量表达式,其值的类型应当与switch表达式的数据类型相匹配。,2023/7/1,37,常见错误,int mingCi=1;switch(mingCi)case 1:System.out.println(出任武林盟主);case 2:System.out.printl

15、n(出任武当掌门);case 3:System.out.println(出任峨嵋掌门);default:System.out.println(被逐出师门);,输出结果是什么?,如果需要每个case执行完后跳出,在每个case后不要忘记写break;,2023/7/1,38,常见错误,int mingCi=1;switch(mingCi)case 1:System.out.println(出任武林盟主);break;case 2:System.out.println(出任武当掌门);break;case 2:System.out.println(出任峨嵋掌门);break;default:Sys

16、tem.out.println(被逐出师门);,case后面的常量必须各不相同,代码错误,2023/7/1,39,常见错误,String day=星期一;switch(day)case 星期一:System.out.println(星期一:青菜);break;case 星期二:System.out.println(星期二:鱼);break;default:,switch后面小括号中表达式的值必须是整型或字符型,代码错误,2023/7/1,40,trycatch语句,Java提供了一种异常的机制协助程序报告和处理错误异常就是在程序的运行过程中所发生的不正常的事件,它会中断正在运行的程序Try标识

17、一个可能会发生异常的语句块Catch标识一个处理异常的语句块Finally标识一个无论try块中语句异常是否发生都会执行的语句块。,异常!,程序运行,程序中断运行,2023/7/1,41,trycatch 语句格式,try 语句块/执行该语句块,可能会发生异常 catch(异常类型e)异常发生时要执行的语句块 finally 无论异常发生与否,都要执行的语句块,2023/7/1,42,什么是循环:,打印50份试卷,10000米赛跑,旋转的车轮,循环结构的特点,锲而不舍地学习,生活中的循环,2023/7/1,43,while语句,while语句的格式:while(布尔表达式)语句或语句块当条件(

18、布尔表达式)为true,则不断地执行语句或语句块“while”循环的中止条件是布尔表达式变为false如果布尔表达式一开始就为false,则不执行循环体,int counter=1,sum=0;while(counter=100)sum+=counter;counter+;,2023/7/1,44,While语句,特点:先判断,再执行步骤:使用while循环的步骤1、分析循环条件和循环操作2、套用while语法写出代码3、检查循环是否能够退出,while(循环条件)循环操作,符合条件,循环继续执行;否则,循环退出,循环中被重复执行的操作,int i=1;while(i=30)System.ou

19、t.println(我能行!);i+;,编码规范:缩进、换行,2023/7/1,45,while循环常见问题,/*打印4次“欢迎新同学”*/public static void main(String args)int i=0;while(i 4)System.out.println(“欢迎新同学);i+;,永远都不会退出的循环称为死循环,循环一直执行,不会退出,哪里出错了?,2023/7/1,46,while循环常见问题,/*打印4次“欢迎新同学”*/public static void main(String args)int i=1;while(i 4)System.out.printl

20、n(“欢迎新同学);i+;,i=4,只打印了三次,哪里出错了?,注意检查循环次数是否满足需求,2023/7/1,47,while循环常见问题,/*打印4次“欢迎新同学”*/public static void main(String args)int i=0;while(i 5)System.out.println(“欢迎新同学);i+;,注意:如果一开始条件就不满足,while循环一次都不执行,i 5,一次都没有打印,哪里出错了?,2023/7/1,48,什么是do-while循环,do 循环操作 while(循环条件);,先执行一遍循环操作,符合条件,循环继续执行;否则,循环退出,特点:先

21、执行,再判断,2023/7/1,49,while循环和do-while循环的区别语法不同初始情况不满足循环条件时while循环一次都不会执行do-while循环不管任何情况都至少执行一次,do 循环操作 while(循环条件);,while(循环条件)循环操作,先判断,再执行,先执行,再判断,比较while和do-while,2023/7/1,50,for循环的语法和执行顺序,什么是for循环,for(;);,条件为true,循环体被执行,for(int i=0;i 100;i+)System.out.println(我最棒);,代码规范:格式对齐、代码的缩进,表达式1,表达式2,表达式3,循

22、环操作,参数初始化,条件判断,更新循环变量,1,2,4,3,2023/7/1,51,for循环常见问题,for(;i10;i+)System.out.println(这是+i);,int i=0;,编译错误:变量 i 没有初始化,for(;);,不能省略,可省略,表达式1省略,循环变量的初始值在for语句之前由赋值语句取得,2023/7/1,52,for循环常见问题,for(int i=0;i+)System.out.println(这是+i);,编译正确,但是缺少循环条件,造成死循环,2023/7/1,53,for循环常见问题,for(int i=0;i10;)System.out.prin

23、tln(这是+i);,i+;,省略表达式3,在循环体内应设法改变循环变量的值以结束循环,编译通过,但是循环变量的值无变化,造成死循环,2023/7/1,54,for循环常见问题,for(;)System.out.println(这是测试);,表达式全省略,无条件判断,循环变量无改变,应在循环体内设法结束循环,否则会造成死循环,死循环,2023/7/1,55,为什么需要break语句,int i=2;switch(i)case 1:System.out.println(星期一);break;case 2:System.out.println(星期二);break;/其他语句,遇到break,立即

24、跳出switch语句,回顾break用于switch语句,描述4000米长跑比赛,for(int i=0;i10;i+)跑400米;,if(不能坚持)break;/退出,第8圈,快累死了我要退出,2023/7/1,56,什么是break语句,break:改变程序控制流用于do-while、while、for中时,可跳出循环而执行循环后面的语句,while()break;,跳出整个循环,break通常在循环中与条件语句一起使用,2023/7/1,57,什么是continue语句,continue:只能用在循环里continue 作用:跳过循环体中剩余的语句而执行下一次循环,while()cont

25、inue;,继续下一次循环,通常与条件语句一起使用,加速循环,for(int i=0;i10;i+)跑400米;if(!口渴)continue;/不喝水,继续跑 接过水壶,喝水;,示例,2023/7/1,58,循环结构总结,到目前为止所学的循环结构有哪些?,需要多次重复执行一个或多个任务的问题考虑使用循环来解决,2023/7/1,59,循环总结,int i=0;int sum=0;while(i10)sum=sum+i;i+;,int i=0;int sum=0;do sum=sum+i;i+;while(i10);,int sum=0;for(int i=0;i10;i+)sum=sum+i

26、;,1,2,3,4,1,2,3,4,1,2,3,4,while和for相同,先进行判断,后执行循环体内容do-while是先执行,后判断,至少执行一次,指出各种循环结构的执行顺序,2023/7/1,60,嵌套的循环结构,for循环的嵌套while循环的嵌套do.while循环的嵌套以上三个任意之间的嵌套,2023/7/1,61,return语句,return语句的格式是:return;或 return 表达式;return关键词有两方面用途:指定一个方法返回什么值结束当前方法的执行,将控制返回到方法调用处返回值为void的方法可以不写return语句,但是,如果一个方法声明它将返回void之外

27、的其他值,那么必须确保每一条代码路径都将返回一个指定类型的值。,2023/7/1,62,控制流语句小结,顺序结构:语句顺序执行 分支结构:语句在满足条件下执行if,if-else,if-else if-else,switch 循环结构:语句在满足条件下循环执行多次while,do-while,for跳转语句break,continue,2023/7/1,63,包,包解决类的同名问题,允许类组成较小的单元(类似文件夹),易于找到和使用相应的文件,防止命名冲突,更好的保护类、数据和方法,2023/7/1,64,如何创建包,package s1java.sg.chap7;public class A

28、ccpSchool public String toString(),包名,使用package声明包,以分号结尾,如果有包的声明,一定作为Java源代码的第一条语句,2023/7/1,65,包命名规范,包名由小写字母组成,不能以圆点开头或结尾自己设定的包名之前最好加上唯一的前缀,通常使用组织倒置的网络域名。如:域名 自己设定的包名部分依不同机构各自内部的规范不同而不同,package mypackage;,package net.javagroup.mypackage;,package net.javagroup.research.powerproject;,部门名,项目名,package.m

29、ypackage;,2023/7/1,66,如何导入包,为了使用不在同一包中的类,需要在Java程序中使用import关键字导入这个类,import java.util.*;/导入java.util包中所有类import java.lang.*;/导入java.lang包中所有类,关键字import并不陌生,import 包名.类名;,1、系统包(eg:java.lang)2、自定义包:net.javagroup,*:指包中的所有类HelloSchool:指包中的HelloSchool类,2023/7/1,67,import 语句,一个java源程序中可以有多个import语句,它们必须出现在

30、package语句之后;类的定义之前。,2023/7/1,68,Java程序的基本结构,package 包名;import 包名.类名;/更多的import语句public class 类名int val=/变量定义语句Public static void main(String args)/方法定义/变量定义和控制语句构成的方法体,2023/7/1,69,本章总体纲要,数据运算语句Java程序实例,2023/7/1,70,结构化程序设计,结构化程序设计=数据+操作+流程控制+结构化程序设计方法,2023/7/1,71,流程控制,顺序结构Java中的最基本结构选择结构if、if-else 和 switch-case循环结构while、do-while 和 for,2023/7/1,72,程序实例(p3335),上机练习开始追求结果正确,领会要点以后,设法修改,力求精练。,2023/7/1,73,引用声明,本课件参考了下面的书及其课件:雍俊海.Java程序设计教程.北京:清华大学出版社,2007.,

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 建筑/施工/环境 > 农业报告


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号