




免费预览已结束,剩余66页可下载查看
下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1,第三章JAVA语言基础2,表达式与程序流控制数组,2,顺序结构选择结构循环结构顾名思义,顺序结构就是程序从上到下一行一行执行的结构,中间没有判断和跳转,直到程序结束。,程序流控制,whiledowhileforIfelseswitch,3,if语句的选择结构,if(表达式)语句;if(表达式)语句1;else语句2;if(表达式1)语句1;elseif(表达式2)语句2;elseif(表达式2)语句3;else语句n;每个语句可以是使用组成的复合语句变量布尔表达式?语句1:语句2;,4,分支流程-if语句,例:比较变量x,y的大小,x、y中的最大值放在z中if(xy)z=x;elsez=y;,else及后面的语句序列可以省略。当语句序列1和语句序列2为单语句时,可以省略花括号。即在有多个语句并列出现在控制语句中,必须加花括号。这个规则同样适用于switch、while、dowhile、for语句。,5,分支流程-if语句,例4.3.2z=y;if(xy)z=x;例4.3.3用if语句实现将变量ch中的小写字母变为大写字母。if(ch=a,6,if语句的选择结构,If语句还可以嵌套使用if(表达式1)if(表达式2)语句1;else语句2;esleif(表达式2)语句3;else语句4;嵌套时最好使用确定层次界限,举例说明,7,分支流程-if语句,三、解决二义性else与最近的第一个没有配对的且为可见的if配对1、if(a=0)p=0;if(a0)p=-1;elsep=1;,2、if(a=0)p=0;if(a0)p=-1;elsep=1;,8,分支流程-if语句,1、每个程序段中的else与那个if配对?答:程序段1中else与第二个if配对,程序段2中else与第一个if配对2、假如a的初值为-3则p的结果是什么?答:程序段1中p的值为-1,程序段2中p的值为1。,9,switch语句的选择结构,Switch(表达式)case常量表达式1:语句1;case常量表达式2:语句2;case常量表达式n:语句n;default:语句n;default语句是可选的,它接受除上面接受值的其他值,通俗的讲,就是谁也不要的都归它。case后面可以跟多个语句,这些语句可以不用大括号括起来。switch语句判断条件可接受int,byte,char,short型,不可以接受其他类型一旦碰到第一次case匹配,就会开始顺序执行以后所有的程序代码,而不管后面的case条件是否匹配,后面case条件下的代码都会被执行,直到碰到break语句为止。我们可以利用这个特点来用同一段语句处理多个case条件,10,分支流程-switch语句,if语句之提供两路选择,在解决多路选择时非常不便java提供了switch多路选择语句例如:根据学生成绩统计各分数段的学生人数,11,分支流程-switch语句,Switch语句的语法格式为:Switch(表达式)case常量表达式1:语句组1;case常量表达式2:语句组2;。case常量表达式n:语句组n;default:语句组n+1;,12,分支流程-switch语句,根据整型变量dayOfTheWeek(0-6)的值输出其表示的星期几的英语单词。switch(dayOfTheWeek)case0:System.out.println(Sunday);break;case1:System.out.println(Monday);break;case2:System.out.println(Tuesday);break;case3:System.out.println(Wednesday);break;case4:System.out.println(Thursday);break;case5:System.out.println(Friday);/break;case6:System.out.println(Saturday);/break;default:System.out.println(Unknowweekday);/break;/break可省略,13,分支流程-switch语句,根据学生成绩输出优、良、中、及格和不及格#includevoidmain()intint_grade;int_grade=80;switch(int_grade)case10:case9:System.out.println(优”);break;case8:System.out.println(”良”);break;,14,分支流程-switch语句,case7:System.out.println(”中”);break;case6:System.out.println(”及格”);break;case5:case4:case3:case2:case1:case0:System.out.println(”不及格”);break;default:System.out.println(”输入错误n”);break;/break可省略,15,分支流程-switch语句说明,switch后面的表达式只能是整型、字符型或枚举类型。case后面的常量必须与常量表达式类型匹配当表达式的值与某一个case后面的常量表达式相等时,就执行此case后面的语句,若没有匹配的常量表达式,就执行default后面的语句每一个常量表达式的值都是唯一的,即常量表达式不能重复出现,16,分支流程-switch语句说明,case后面的语句结束时,会执行下一个case后面的语句,即多个case可以共用一组执行语句。因此,若要跳到switch语句外面,必须借助break语句default是可选项,即当未找到匹配的case常量表达式时,会跳到switch外case后面的语句块可以不要花括号。另外,如果switch中只有一个case常量表达式,则可以省略花括号,17,循环流程,java的循环语句能够提供重复处理的能力:while,dowhile,for循环的结束控制条件控制着循环从循环中跳出的控制语句:break,continue;,18,while语句,while语句是一个循环控制语句,用来控制程序段的重复执行格式:while(条件表达式)循环体while语句的四个要素:循环变量初始化、继续条件、循环体、改变循环变量的表达式,19,4.4.1while语句,循环变量初始化,继续条件,循环体改变循环变量,true,false,20,while循环语句,While(表达式)语句;intx=1;while(x3)System.out.println(x=+x);x+;,注意:while表达式的括号后面一定不要加“;”,21,While语句举例例4.4.1求1+3+5+。+99的值。,publicstaticvoidmain(Stringargs)inti=1,sum=0;while(i=100)sum=sum+i;i=i+2;System.out.println(sum=+sum);,如果循环体包含一个以上的语句,应该用花括号扩起来,22,While语句举例,publicclassWhileDemopublicstaticvoidmain(Stringargs)StringcopyFromMe=Copythisstringuntilyou+encountertheletterg.;StringBuffercopyToMe=newStringBuffer();inti=0;charc=copyFromMe.charAt(i);while(c!=g)copyToMe.append(c);c=copyFromMe.charAt(+i);System.out.println(copyToMe);,Copythisstrin,结果:,23,do。while语句,do.while语句也是一个循环控制语句,循环执行语句,直到条件表达式为假格式:do循环体while(条件表达式);,循环体至少执行一次。当循环体有多个语句时必须加花括号-这也是和while的区别。,24,do-while循环语句,publicclassTestDopublicstaticvoidmain(Stringargs)intx=3;while(x=0)System.out.println(ok1);x+;inty=3;doSystem.out.println(ok2);y+;while(y=0);,25,求1+3+5+。+99,publicstaticvoidmain(Stringargs)inti=1,sum=0;dosum=sum+i;i=i+2;while(i100);System.out.println(sum=+sum);,26,do-while语句示例,publicclassDoWhileDemopublicstaticvoidmain(Stringargs)StringcopyFromMe=Copythisstringuntilyou+encountertheletterg.;StringBuffercopyToMe=newStringBuffer();inti=0;charc=copyFromMe.charAt(i);docopyToMe.append(c);c=copyFromMe.charAt(+i);while(c!=g);System.out.println(copyToMe);,Copythisstrin,结果:,27,do-while循环语句,编写一个程序,这个程序不断地读取从键盘上输入的字符,直到读到字符q时,程序结束。提示:调用System.in.read();可以读取到一个从键盘上输入字符对应的整数。通过这个程序,你一定能体会到在什么样的情况下,用do-while循环语句比while循环语句方便。,28,for循环语句,格式:for(初始化表达式;条件表达式;循环表达式)循环体执行过程如下先求解表达式1,表达式1只执行一次,一般是赋值语句,用于初始化变量求解表达式2,若为假(0),则结束循环执行循环体执行表达式3转回(2),29,for循环语句,30,for循环语句例求1+2+3+。+100,for(inti=1,sum=0;i=100;i+)sum+=i;System.out.println(sum=+sum);,31,for循环语句,for(intx=1;x10;x+)System.out.println(x=+x);等效于intx=1;for(;x10;x+)System.out.println(x=+x);等效于,intx=1;for(;x=10)break;System.out.println(x=+x);x+;,32,例求1+2+3+。+100,说明:表达式1,表达式2,表达式3和循环体可以省略,例如上述for语句可以改为:inti=1,sum=0;/表达式1放在for前面for(;i=100;i+)sum+=i;inti=1,sum=0;for(;i100)/强制结束循环break;,34,例求1+2+3+。+100,for(inti=1,sum=0;i=100;sum+=i+);/省略循环体for(inti=1,sum=0;sum+=i+,i=100;);/省略表达式3和循环体,35,特殊跳转语句,breaklabel从switch语句、循环语句中跳出。continuelabel跳过标号循环体的其余部分,不带label跳过最内层循环的剩余语句。label:statement,36,break语句,break语句可以中止循环中的子语句和switch语句。一个无标号的break语句会把控制传给当前(最内)循环(while,dofor或Switch)的下一条语句。如果有标号,控制会被传递给当前方法中的带有这一标号的语句。如:st:while(true)while(true)breakst;,37,break语句与多重循环,break语句可以用在循环语句和switch语句中。在循环语句中用来结束内部循环;在switch语句中用来跳出switch语句。如果是多重循环,那么就只能从break所在的循环中跳出来。,38,For(i=0;i10;i+)for(j=0;j10;ji+)if(i*j=50)break;if(i*j=50)break;,39,例break用在循环语句中。,#includevoidmain()inti=1,sum=0;while(i20)break;i+;couti;,40,例求乘积为50的小于10的两个最小的整数,for(inti=0;i10;i+)for(intj=0;jn;j+)if(i*j=50)break;if(i*j=50)break;,41,continue语句,continue语句只能出现在循环语句(while,do,for)的子语句块中,无标号的continue语句的作用是跳过当前循环的剩余语句块,接着执行下一次循环。用continue语句的打印出0到10之间的所有奇数的程序例子。for(inti=0;i10;i+)if(i%2=0)continue;System.out.println(i);,42,特殊跳转语句举例,1Loop:while(true)2for()3switch()4case-1:5casen:6breakloop;7891011test:for()1213while()14if()1516continuetest;171819,/跳出while去11行,/跳到11行,43,数组,声明数组数组的创建与初始化多维数组数组拷贝,44,数组,数组中的元素都是同一种类型。数组的长度在创建的时候确定,并且在创建后固定不变。如果要建立存储不同类型数据的集合,或者要求集合的长度可以动态变化,可以使用Collection(集合)类。,45,数组声明,可以声明基本类型和类类型的数组声明包含两部分:数组类型与数组名称。格式:C,C+标准形式:chars;Pointp;chars;Pointp;,46,数组的声明,在Java中数组作为类来处理,所以数组声明并不创建实例对象,而是创建一个可用来引用该数组的引用。,47,数组的创建与初始化,可以象其它对象一样,使用new来创建,格式:newelementTypearraySize例:s=newchar20;/创建有20个字符的数组p=newPoint100;/创建100个Point的引用数组,48,数组的初始化,数组元素是被初始化的。字符串-u0000,null对象数组-null用初始值创建数组Stringnames=“Jack”,“Wang”,“Lee”;inta=1,2,3;Dated=newDate(),newDate(),newDate(),49,堆内存和栈内存,intx;x=newint100;x=null;的内存状态变化情况,50,数组举例,publicclassArrayOfDemopublicstaticvoidmain(Stringargs)intx;x=newint100;for(inti=0;i100;i+)System.out.println(x+i+is+xi);,51,对象数组,除了基本类型以外,还可以创建对象类型的数组。Pointp;p=newPoint100;/创建100个引用创建100个Point对象:p0=newPoint();p1=newPoint();,52,对象数组举例,publicclassArrayOfStringsDemopublicstaticvoidmain(Stringargs)StringanArray=StringOne,StringTwo,StringThree;for(inti=0;ianArray.length;i+)System.out.println(anArrayi.toLowerCase();,53,多维数组,声明方法inta;或inta;实例化a=newint44;/直接为每一维分配内存,生成规则数组a=newint4;/只有最后维可以不给值,其它都要给,可/以生成不规则数组a0=newint10;a1=newint5;数组成员变量length-数组元素个数:a=newint1012;a.length=10;a0.length=12;,54,多维数组示例,publicclassArrayOfArraysDemo2publicstaticvoidmain(Stringargs)intaMatrix=newint4;/populatematrixfor(inti=0;iaMatrix.length;i+)aMatrixi=newint5;/createsub-arrayfor(intj=0;jaMatrixi.length;j+)aMatrixij=i+j;/printmatrixfor(inti=0;iaMatrix.length;i+)for(intj=0;jaMatrixi.length;j+)System.out.print(aMatrixij+);System.out.println();,55,数组拷贝,数组一旦创建,其大小不可变,但已有的数组变量可指向全新的数组;该数组原指的内容丢失inta=newint6;a=newint10;/不必重新声明a数组变量之间赋值是引用赋值。1inta=newint6;2intb;3b=a;,56,数组数据的复制,通过拷贝数组的函数。System.arrayCopy(Objectsource,intsrcIndex,Objectdest,intdestIndex,intlength),数组拷贝,57,数组拷贝示例,intia=newint1,2,3,4,5;intib=newint9,8,7,6,5,4,3;System.arraycopy(ia,0,ib,0,3);/复制源数组中从下标0开始的3个元素到目的数组,从下标0的位置开始存储。for(inti=0;iia.length;i+)System.out.print(iai);System.out.println();for(intj=0;jib.length;j+)System.out.print(ibj);System.out.println();,58,数组拷贝示例,publicclassArrayCopyDemopublicstaticvoidmain(Stringargs)charcopyFrom=d,e,c,a,f,f,e,i,n,a,t,e,d;charcopyTo=newchar7;System.arraycopy(copyFrom,2,copyTo,0,7);System.out.println(newString(copyTo);,59,数组拷贝示例,运行结果:,60,Java的函数,变量的生命周期和作用域函数,61,变量的生命周期与作用域,变量要先定义,后使用,但也不是在变量定义后的语句一直都能使用前面定义的变量。我们可以用大括号将多个语句包起来形成一个复合语句,变量只能在定义它的复合语句中使用。,62,变量的生命周期与作用域,intx=12;intq=96;/x和q都可用intx=3;/错误的定义,Java中不允许有这种嵌套定义System.out.println(xis+x);System.out.println(qis+q);q=x;/错误的行,只有x可用,q超出了作用域范围System.out.println(xis+x);,63,函数,函数(子程序)的概念与作用。定义一个函数的格式编写打印三个矩形的程序(用流水帐的方式与用函数的方式进行对比分析)。返回值类型函数名(参数类型形式参数1,参数类型形式参数2,.)程序代码return返回值;其中:形式参数:在方法被调用时用于接收外部传入的数据的变量。参数类型:就是该形式参数的数据类型。返回值:方法在执行完毕后返还给调用它的程序的数据。返回值类型:函数要返回的结果的数据类型。实参:调用函数时实际传给函数形式参数的数据。如何理解函数返回值类型为void的情况,64,函数的调用,函数调用的格式在函数中使用return提前返回函数调用的过程分析,65,函数举例,/*下面是打印出第一个矩形的程序代码*/for(inti=0;i3;i+)for(intj=0;j5;j+)System.out.print(*);System.out.println();/换行System.out.println();/下面是打印出第二个矩形的程序代码for(inti=0;i2;i+)for(intj=0;j4;j+)System.out.print(*);System.out.println();System.out.println();/下面是打印出第三个矩形的程序代码for(inti=0;i6;i+)for(intj=0;j10;j+)System.out.print(*);System.out.println();System.out.println();,66,函数举例,publicstaticvoiddrawRectangle(intx,inty)for(inti=0;ix;i+)for(intj
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 水稻无人机植保服务创新创业项目商业计划书
- 情侣互动SPA游戏区创新创业项目商业计划书
- 定制旅行装备创新创业项目商业计划书
- 屠宰副产品跨境电商物流与配送创新创业项目商业计划书
- 家禽大数据分析服务创新创业项目商业计划书
- 工艺流程改进服务创新创业项目商业计划书
- 工业废水处理技术与工程应用
- 儿童绘本阅读俱乐部活动策划方案
- 幼儿园后勤工作总结及改进计划
- 药剂科岗位职责及亮点展示
- 巡检管理制度燃气版
- 2024年企业全面预算管理教材模板
- 新生儿洗胃操作课件
- 2024行政办事员职业资格认证理论考核试题
- 国际工程风险管理案例分析
- 中医眼科学瞳神疾病上
- 运动中的攻击性行为
- 欧美钢结构案例-花旗银行中心工程危机
- 从“管理型”到“服务型”:中职学校行政组织的模式转型与对策研究
- 中华人民共和国档案法修订宣传课件
- 工具式型钢悬挑脚手架施工工法
评论
0/150
提交评论