Java全部PPT课件_第1页
Java全部PPT课件_第2页
Java全部PPT课件_第3页
Java全部PPT课件_第4页
Java全部PPT课件_第5页
已阅读5页,还剩348页未读 继续免费阅读

下载本文档

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

文档简介

.,1,corejava的课程体系,Java语法基础Java面向对象的编程Java的高级编程接口:4个专题Java图形GUI编程多线程编程I/O编程网络编程,.,2,Java语言的知识体系结构图,.,3,java语法基础Day01-Day03,.,4,Day01,了解java的产生与发展理解java语言的特性理解java虚拟机jvm的特性和功能理解字节码和垃圾收集的概念列举出在java平台上实现代码安全的方法知道在java中定义类,包,applets和applications掌握编码,编译,运行java应用程序的步骤安装,搭建java开发运行环境第一个java程序带包的java程序JVM搜索类的顺序和类加载CLASSPATH的应用常用的java命令,.,5,Java的产生与发展,Java的产生Sun公司的Green项目基于c+开发的Oak语言Mosaic和Netscape到JavaHot浏览器Internet的蓬勃发展推动了java的发展(Applet)Java(爪哇)名字的由来Java的发展Java的现状纯面向对象的语言平台无关性,一次编写,到处运行适合于基于Internet应用程序开发Java的地位确立IT产业很多大公司购买了java的许可证众多软件开发商已支持java软件产品Intranet是企业信息系统最佳的解决方案,java发挥了不可替代的作用Java的发展与其分支95.5.23Oak改名为java98.12.java1.2,后来改名为java2陆续出现了java1.3,java1.42004.12java1.5版本推出命名为java5.0后来陆续出现java6.0,java7.0,.,6,Java的产生与发展,Java的发展与其分支java在今天已形成了庞大的体系,经过十年发展,已有了3个平台标准三大技术平台都提供了相应的开发工具包(SDK:SoftWareDevelopmentKits)javaSE-标准版应用平台javaEE-企业级应用平台javaME微型版应用平台:应用在存储,运算很小的受限的平台,.,7,Java语言的特性,什么是java?程序设计语言;开发环境;应用环境;部署环境Java的特性提供更简单的方式写程序无指针,无需做内存管理提供庞大的类库,纯粹面向对象设计支持静态和动态的代码继承和重用提供一个可解释执行的环境支持任何开发平台只写一次,到处使用支持多线程支持动态升级以上特性如何实现Java虚拟机:JVM垃圾收集:GarbageCollection代码安全:CodeSecurity字节码文件:Verifying,.,8,Java语言的特性,JVM与跨平台性:一次编写,到处运行:不同操作系统,不同数据库,不同的服务器数据类型也可以实现跨平台Java虚拟机的作用程序的开发及运行方式Java的工作方式:先编译后解释,Java是先编译后解释执行,.,9,CPU,Java语言的特性,Java源文件先通过编译生成一个字节码文件bytecode字节码不与当前OS相关,结构中立的,是二进制文件。任何平台编译生成的字节码都是一样的。字节码文件不能直接执行,必须需要JVM的支撑才能运行JVM是sun开发的,字节码的结构也是sun定义的,他们之间有很好的接口JVM存在的意义实际上就是屏蔽掉底层平台的差异,为上层结构中立的字节码统一运行的环境,而JVM会将字节码转化成相应的底层平台的机器码执行java解释器功能是用JVM来实现的,java的解释器是在jvm中运行的JVM的作用:对下是屏蔽掉了底层平台的差异,对于上层的字节码而言不需要关心它运行在什么平台上,由JVM去把底层平台的差异屏蔽掉对上为结构中立的字节码提供了统一的运行环境,实现了字节码的跨平台,JVM,Bytecode,.,10,Java语言的特性,Java的垃圾收集器Java的垃圾收集解除了程序员分配存储器的责任,它提供了一种系统级线程以便跟踪每一存储器的分配情况。在Java虚拟机的空闲周期,垃圾收集线程检查并释放那些可被释放的存储器。内存泄漏垃圾收集线程垃圾收集调用的方法:java.lang.System.gc()/java.lang.Runtime.gc()Java代码的安全性,.,11,Java语言的特性,字节码的作用字节码的结构是JVM特定指定的字节码不会破坏,篡改系统禁止运行时堆栈溢出防止蠕虫病毒袭击参数类型正确类型转换正确安装,搭建java开发运行环境官方网站下载JDK官方网站:不同系统平台,JDK不一样,选择适合于自己平台的JDKJDK的安装Windows直接安装运行jdk的可执行exe文件Linux系统将JDK文件压缩包解压后放入opt目录,配置初始化文件的环境变量Windows下JDK安装后,会有2个文件夹生成JDK:java开发工具软件包,它包含了java的编译,调试,运行整个环境和包含了整个类库的软件包JRE:java运行环境JDK,JRE和JVM,.,12,安装,搭建java开发运行环境,JDK,JRE和JVMjre是jdk的子集,在一套完整的jdk中就包含了jrejre只负责运行一个编译好的java程序(字节码文件bytecode)jdk它可以去编译,调试,运行整个操作过程都支持在jre内部有一个软件组件jvm就是java虚拟机JDK的结构简介bin目录:java开发调试的命令,exe文件,连接库文件,编译器等等编译一个java文件:javac;运行一个字节码文件:javajre目录:jdk中自带的jresrc压缩文件:放置的是jdk类库的源码文件,按包结构组织的demo::java代码的演示实例文件include:用于编译本地方法的文件docs:html格式的类库文档lib:类库文件Java程序开发环境配置在windows平台:autoexec.bat文件;使用对话框(右击我的电脑属性高级环境变量系统或用户的环境变量)操作Unix平台需要分shell:csh$HOME/.cshrcbsh/ksh$HOME/.profile环境变量:JAVA_HOME:保存jdk的安装目录windows:setJAVA_HOME=c:programfilesjavajdk1.5.0_09,.,13,Java程序开发环境配置,csh:setenvJAVA_HOME/opt/jdk1.5.0_09bsh/ksh:JAVA_HOME=/opt/jdk1.5.0_09CLASSPATH:系统搜索字节码(类文件.class)文件的搜索路径。设置系统在查找字节码文件时,它的搜索路径。windows:setCLASSPATH=.;%JAVA_HOME%jrelibrt.jar;csh:setenvCLASSPATH.:$JAVA_HOME/jre/lib/rt.jarbsh/ksh:CLASSPATH=.:$JAVA_HOME/jre/lib/rt.jarPATH:设置命令的搜索路径,在执行命令时,操作系统就会在PATH设置的路径去查找命令的可执行文件。设置path不能覆盖原有的,可以使用特殊符号windows:%PATH%;Linux:$PATH:windows:setPATH=%PATH%;%JAVA_HOME%bin;csh:setenvPATH$PATH:$JAVA_HOME/binbsh/ksh:PATH=$PATH:$JAVA_HOME/binLinux系统使用bsh/ksh时则需要exportJAVA_HOMECLASSPATHPATH将环境变量设置为全局的编辑,编译,调试,运行一个java程序写第一个java程序:HelloWorld.javapublicclassHelloWorldpublicstaticvoidmain(Stringargs)Stringstr=“HelloWorld!”;,.,14,编辑,编译,调试,运行一个java程序,System.out.println(“TheStringis::”+str);System.out.println(MyAgeis:+age);通过这个程序掌握以下概念一个java源文件中可以定义多个类,但最多只能有一个类用public来修饰,而且该public修饰的类名要与java源文件名一样。一个java应用程序应该包含一个主方法,而且主方法的签名是固定不变的。主方法定义在哪个类中并不做固定安排。定义的所有的代码中,只看到类的定义。在类中去封装其他变量或方法。编译HelloWorld.java程序开始运行cmd进入dos,修改当前目录为d:javacodeday01使用javacHelloWorld.java命令编译编译成功后,到day01程序目录下查看,发现有2个.class文件得出有效结论编译报错则根据错误提示找出错误位置然后修改程序重新编译举例来演示学习错误提示假如将String的S写为小写:stringstr=“HelloWorld!;假如将out写为out:System.otu.println(“TheStringis:+str);再次编译一下,查看错误提示,必须要会读错误提示分析错误提示,排除错误是基本的能力,.,15,包的概念,含义和使用,运行HelloWorld程序:包含有主方法的程序才可以运行,没有包含主方法的类是不能运行的开始运行cmd进入dos;使用cdd:javacodeday01进入程序目录使用javaHelloWorld(包含有主方法的类的类名)来运行使用javaStudent就会报告错误提示没有主方法要求学员做HelloWorld程序并操作演示几种错误情况和调错带包的java程序包的声明:packageday01package是关键字day01是包名包的概念和含义包名的命名符合标识符命名规则即可企业项目开发中,包的命名也有企业规范的如:com.shunshi.abs.model.来隔开每一部分,每一部分都是包结构com.shunshi这个是软件公司网址的url,可以区分确认哪个公司开发的软件产品com.sun/com.ibm,这样包名不会产生冲突abs是项目名,model是项目中的模块/子模块名写MySecondJava.java程序使用包结构packagecom.shunshi.corejava.day01使用包后,如何编译写MySecondJava.java,使用包声明:packagecorejava.day01;编译程序:javacd.MySecondJava.java,.,16,JVM搜索类的顺序与类加载,-d选项的作用:把编译好的字节码放在你指定的目录下,所以需要指定目录如果源文件声明了包结构,那么在给定的目录位置下会按照包结构自动创建目录结构,编译好的字节码文件是放在最终的子目录下为什么使用包?企业项目开发中方便管理不同的类用包来分门别类地组织不同模块功能的类使用包的好处:举例:航班机票预定项目JVM搜索类的顺序与类加载使用包结构编译后,如何运行?使用java,注意:javacorejava.day01.MySecondJava如何运行?类加载演示错误情况的发生直接使用javaMySecondJava则报告找不到这个类的定义的错误提示为什么找不到?从系统如何去找类来说,与jvm在查找类时的搜索顺序有关系直接进入包结构目录cdcorejavaday01,使用javaMySecondJava运行,则报告找不到类的定义同时给出错误原因(找到的类与要运行的类不一致),.,17,Java常用命令,为什么不一致呢?找到的是带包的,运行的是不带包的CLASSPATH的应用深刻理解java技术体系如何使用第三方的java技术常用命令javac选项源文件名编译java源文件-d查看javac命令到底有哪些选项,直接使用javac/javac-help命令回车java选项类名参数运行java程序jdb选项类名参数进行debug调试的命令javadoc选项包名源文件名生成jdk的api形式的程序文档在java源文件中允许使用文档形式的注释单行注释/注释内容多行注释/*注释内容*/多行注释不能嵌套,但可以嵌套单行注释文档注释/*注释内容*/出现在类的定义,方法的定义,属性的定义之前,用来说明类的含义,方法的含义,属性的含义使用javadoc命令给MySecondJava.java生成文档注释在MySecondJava.java中,类前,主方法前写一些文档注释使用javadoc命令将文件MySecondJava.java中的文档注释抽取出来生成程序文档。javadocd.docMySecondJava.java,.,18,Java常用命令,分析程序文档结构和理解jdk的API文档jarctxuvfm0Mijar-filemanifest-file-Cdirectoryfiles创建/展开/更新一个jar文件jar文件:sun公司定义的一种文件格式,与zip格式相同,可以用普通的解压缩工具解开。jar文件压缩的一般是java的字节码文件,按照包结构组织好的.class文件。创建jar文件:将d:corejavaday01中的1个.class文件打包成一个jar文件jar-cvffirst.jar.corejava不与源文件放在一起c代表创建jar文件v是可视化即可以看见创建过程和创建详细清单f代表可在后面指定jar文件名解压生成后jar文件,有corejava和META-INF2个文件夹jar文件有什么作用?将开发的类打包jar文件给客户,客户得到后只需要设置classpath后就可以用了开发一个中间件,将中间件的程序打包成jar打包day01.jar(corejavaday01中的.class)给第三个程序MyThirdJava使用。写MyThirdJava.java程序,.,19,Jar文件和import的使用,将day01.jar路径设置给CLASSPATH将day01包下的MySecondJava.class移走将javacodeday01下的MySecondJava.java移走编译运行MyThirdJava来演示自定义jar文件的使用思考问题找不到MySecondJava,没有给包结构名修改为corejava.day01.MySecondJavamsj=newcorejava.day01.MySecondJava();String的使用不需要rt.jar路径给CLASSPATH,也不需要使用包结构名+类名因为它是lang包下的类若在MyThirdJava.java中自定义一个StringclassString则会报错与JVM搜索类的顺序有关,先搜索当前包下的String,它无构造方法简便引入某包下的类直接使用包名+类名的形式,程序太烦琐了在程序的开头使用import包结构名.类名来引入使用的类要引入某包下的所有类则import包结构名.*;,.,20,JDK的常用包,java.lang:JAVA语言包,核心的类和接口,无需导入可直接使用。如String、Math、Integer和Thread。java.awt/javax.swing/java.awt.event:做java的图形开发使用的包,包含有图形组件,用来构建和管理应用程序的图形用户界面。java.applet:用来开发java小程序的类和接口,包含了可执行applet特殊行为的类。java.io:包含了java所有做输入输出的类和接口,包含处理I/O文件的类:用来做网络开发的类和接口java.util:java工具包,包含java开发常用的工具类,java的时间日期,java的数据结构,随机数发生等。,.,21,知道java的特殊符号熟悉java的标识符掌握java的关键字的使用理解java各数据类型的存储和使用原始数据类型基本数据类型的转换定义类,对象,成员变量和引用变量类的声明类变量与类成员变量创建类的对象实例和使用默认值描述引用变量与类对象的关系掌握表达式和运算符的使用,Day02,.,22,Java中的特殊符号,注释单行注释:/多行注释:/*.*/这两种注释只能通过打开源文件来查看,写程序一定要写注释。注释与程序应是2:1多行注释:/*/这个注释可以不打开源文件来查看,java中有一个javadoc工具,它的作用是将源文件中的/*.*/注释单独抽出来放在另一个文件中。例如:javadocd.Hello.java,执行后,会在当前目录下生成一个doc目录,里面文件就可查看注释了。其他符号;一个语句的结束一个语句块空白字符空格,tab,回车,换行等,.,23,Java标识符,标识符:程序中的组件名字,包括类名,方法的参数名,变量名,方法名,包名等定义标识符的规则:以_,$,字母开头;只含有_,$,字母,数字;没有长度限制,不能有空格;不能使用java的关键字或保留字大小写敏感例如:_abc,$ABC,2A,A#,For,顺时Java开发的命名习惯所有的命名要望文生义,这样才具有良好的可读性Total,Sum,ShunshiStudent,类名,接口名:每个单词的首字母大写,其他字母小写如类MyFirstJava,Player,Teacher属性,方法,,局部变量名:第一个单词全小写,从第二个单词开始以后每个单词首字母大写,其他字母小写如方法getName()setDoctorBirthday()常量:每个单词所有字母全部大写,单词之间用_来连接java中使用final修饰finalintMARK_GREED=22;包名:所有字母全部小写如packagecom.shunshi.corejava.day01,.,24,Java关键字,关键字:对Java技术编译器有特殊的含义,可以被编译器识别执行abstractdoimplementsprivatethrowbooleandoubleimportprotectedthrowsbreakelseinstanceofpublictransientbyteextendsintreturntruecasefalseinterfaceshorttrycatchfinallongstaticvoidcharfinallynativesupervolatileclassfloatnewswitchwhilecontinuefornullsynchronizeddefaultifpackagethisJava关键字特点java关键字与c+很多相似,只要与c+一样的,它的含义都与c+中的相同有些关键字c+有,而java没有sizeof求出某种类型的变量的占内存的大小为什么c+有sizeof?因为不同机器内存占用空间大小不一样16,32,64位,取决于操作系统平台。为什么Java不需要?因为有JVM。java中的关键字都是小写的true、false和null为小写,而不是象在C+语言中那样为大写。严格地讲,它们不是关键字。,.,25,Java关键字,有些关键字java没有取消保留下来,但它自己也不用它也不给程序员用goto和const不是Java编程语言中使用的关键字,而是保留字。什么是保留字?为什么保留下来但不能用?在java中final替代constgoto在c+代表无条件跳转,功能很好,但不能经常用,要谨慎。很多建议去掉goto关键字,没有理解goto真正含义。为什么c+到现在都没有删除掉goto?它有一个特殊使命Java中使用break代替goto跳出一层循环:break跳出多层循环:breakoutout是一个标号,可以跳到out标识处break避免滥用goto,把goto功能削弱了,只能跳到外层循环java中加入新的关键字enumassertenum:枚举assert:断言,.,26,Java的原始数据类型,booleantrue/falsebyte8位整型1个字节short16位整型2个字节int32位整型4个字节long64位整型8个字节char16位unicode字符2个字节double64位浮点数字型8个字节float32位浮点数字型4个字节,.,27,boolean类型,Java中定义boolean类型booleanb=true;Java中的boolean类型的取值只能是true,falseJava中的boolean类型不能与int通用,而在c+中可以C+中,0代表false,非0代表trueboolean与int通用好还是不好呢?不好举例说明c+中的boolean与int通用inta=1;if(0a2)couta=,比较运算符,=,(右移,右移一位等于除2),(无符号右移)有符号的右移:则移走后最左边高位填补为原来的符号位有符号的左移:则移出去的不管,移进来用0来填补无符号右移:则移出去的不管,移进来都用0填补inta=68;a=a1);10System.out.println(in11);10intin2=-20;System.out.println(in21);-10System.out.println(in21);很大的数位运算符,.,46,Java的运算符,想要a高8位不变,低8位全变0a操作数只能是布尔表达式在java中,,dd,.,51,Java中的变量,字符串常量:由双引号“”括起来表示。.如“hello”,”33”,”tu0024”空值常量:null表示空值。常量的声明:final类型常量名;final类型常量名=常量值;Java中的变量什么是变量系统为程序分配的内存单元,存储数据的,用一个标识符来表示,其中的数据值是可以改变的,所以叫变量变量名与变量值定义变量的标识符叫变量名内存所装载的数据值叫变量值例如intx=0,y;y=x+3;解释其在内存中的实现原理变量的类型八种基本类型:boolean,byte,short,int,long,char,float,double对象类型:类,接口,数组不同类型变量的取值范围:变量的使用特别要注意的就是数据长度。,.,52,Java的变量,.,53,Java的变量,基本类型变量之间的数据转换自动类型转换:也叫隐式类型转换转换的两种类型之间要兼容目标类型的取值范围要大于源类型如例:byteb=3;intt=b;/程序会将b的结果自动转换为int型强制类型转换:显示类型转换当两种类型不一致,不兼容目标类型的取值范围小于源类型时则就需要进行强制转换转换方法:目标类型变量=(目标类型)值例:intx;byteb=(byte)x;强制转换是将x的值转换后赋给b,而变量x本身的类型不变强制转换会丢失数据表达式的数据类型自动提升表达式在计算值时也会自动进行数据类型提升,.,54,Java的变量,变量的声明:类型变量名;类型变量名=变量值;变量的作用域代码块:在程序中一对花括号之间部分为代码块代码块的作用:代码块决定了在其中定义变量的作用域例:intt;.代码块的使用:一个代码块由若干个语句组成,一个代码块可嵌套在另一个代码块例:intt;.intm作用域:变量的作用域是从定义变量开始一直到定义它的代码块结束。作用域决定了变量的可见性和存在时长局部变量,.,55,局部变量的使用,什么是局部变量定义在方法中的变量局部变量与实例变量的特点局部变量的初始化:通过TestLocal.java来演示局部变量的初始化java中局部变量没有初始化则不能使用;局部变量必须先赋值再使用。实例变量/类变量支持不初始化就可以使用;实例变量/类变量若不初始化,则系统会自动初始化。初始化的值取决于它的类型:int0char0float0.0double0.0booleanfalse对象类型null在主方法中使用实例变量/类变量则必须将其声明为static局部变量的作用域:通过TestLocal1.java来演示作用域局部变量的作用域是从开始定义该变量到定义它的代码块结束,在作用域外使用它是不允许的。System.out.println(a);语句已经在定义inta;的块外;表示一个语句结束,表示语句块重合范围的局部变量的使用:修改TestLocal1.java来演示重合范围的局部变量的使用在同一重合范围中不允许有2个局部变量同名Java局部变量的使用局部变量必须先赋值再使用局部变量的作用域是从定义它开始到定义它的代码块结束在同一重合范围内不允许有2个同名局部变量出现,.,56,Java中的函数,函数什么是函数:能完成一定功能的独立的子程序,在java中这个子程序就称为函数。使用函数的好处:使程序模块化,简单化;程序结构清晰,任务单一,程序清晰易懂,易读,易维护。函数举例:用*实现打印三个不同长和宽的矩形不使用函数:写PrintRectangle.java不用函数,则对于只是矩形的高和宽不一样的矩形也需要重复写很多相同功能的代码。程序复杂,繁琐。使用函数:写PrintRectangle1.java对于相同功能的代码,将其独立出来写成一个函数printRect(intx,inty)对于调用者而言,只关心函数的声明即可分析函数printRect中的代码段称为函数体代码段需要一个名字标记,该标记称为函数名,如printRect函数名和函数体共同构成了函数printRect函数接受了两个数,一个是矩形高,一个是矩形宽;这两个数称为参数列表,.,57,Java中的函数,有时函数还需要返回一个结果,比如CRS民航订票系统,计算机票价格函数的声明定义:一个函数的定义由三部分组成:返回类型,函数名,参数列表返回类型函数名(参数类型形参变量1,参数类型形参变量2.)函数体return返回值;不需要返回任何东西的函数,其返回类型为void函数调用如果函数无返回值或调用者不关心返回值:函数名(参数1,参数2);如果调用者需要返回值:类型变量=函数名(参数1,参数2,.);在程序中直接打印返回值:System.out.println(函数名(参数1,参数2.);java中变量和函数的应用通过写一个TestArgument.java程序来演示变量和函数的应用本程序要来实现从键盘输入2个整数,将他们进行相加后返回结果和变量和函数使用的规则在static方法中只能访问static类变量,只能调用static的函数在类的多个方法使用同一变量,那么这个变量要定义在类中且在任何方法之外,这样的变量叫类变量或实例变量,.,58,Java中的命令行参数的使用,Java中主方法main()是程序入口,程序从主方法开始执行在非static方法中可以使用static变量,非static变量Java的命令行参数的使用什么是命令行参数位于java命令行最后的信息如运行java包名.类名ab回车,其中a,b就是命令行参数,主方法的参数Stringargs就是用来接收命令行参数的Java中的命令行参数是不包括命令名,args0就是指的第一个参数命令行参数接收后都是字符串的,若想要得到相应类型的数字则需要使用包装类的方法来转化。如整型数据int则使用Integer.parseInt(String)方法来转化,.,59,函数的参数传递,函数的参数传递原理,函数的重载什么是函数重载:在同一个类中允许同时存在多个名字相同的方法或函数,只要它们的参数类型和参数个数等不同,这样的情况就叫函数重载(overloaded)。函数重载的条件:一定要参数列表不同,函数名相同,但返回值没有条件要求,.,60,函数的重载,函数的重载参数类型不同参数个数不同参数的顺序不同举例说明:写OverLoad.java来实现函数重载,本程序的功能就是求两个数的和,两个数的可以是基本类型中所有的数字类型若是三个数求和呢?,.,61,Java的流程控制语句,程序的流程控制从结构化设计角度来看,我们的程序结构分为三种:顺序结构,选择结构,循环结构顺序结构:程序从上到下一行一行执行,中间没有任何跳转或判断,直到程序结束,选择结构:if(布尔表达式)执行语句块;if(布尔表达式)执行语句块1;else执行语句块2;,if(布尔表达式)执行语句块;elseif(布尔表达式)执行语句块;elseif()执行语句块;else执行语句块;,.,62,Java的流程控制语句,写TestIfElse.java,并分析程序和if,else的使用if(ab)if(cb)d=10;elsed=20;System.out.println(d)选择结构switch(变量表达式)case取值1:执行语句块1break;.case取值n:执行语句块2break;default:执行语句块2break;,switch的括号中变量或表达是值只能是byte,int,short,char,枚举类型中任意一种无论有多少case,case后面的常量/常量表达式值必须是唯一的,不能相同.每个case中都要写break来跳出分支default分支可放在任何一个分支前后(end,top,middle),写TestSwitch.java来演示,已知学生课程成绩(百分制),将其转化为等级值。规定90以上为A,80-89为B,70-79为C,60-69为D,60以下为E(注意无效数据的检查;演示不用break语句带来的后果)当检查出了无效数据则需要退出当前程序线程调用System.exit(0);,.,63,Java的流程控制语句,程序的流程控制练习:使用switch实现打印星期的程序,测试不加break语句的执行结果循环结构for循环for循环的括号中无论多么复杂则必定有2个分号,将其分为三个部分如for(inti=0;i=10;i+),第一部分:初始化语句;第二部分:循环条件;第三部分:修改表达式第一部分只执行一次第二,三部分,循环体会循环执行直到循环条件不满足跳出循环while循环while(布尔表达式)循环体语句;先判断条件是否满足,满足则执行循环体,再判断条件,满足再执行循环体,直到判断条件不满足则跳出循环do-while循环do循环体语句;while(布尔表达式),.,64,Java的流程控制语句,先执行一次循环体,再判断条件是否满足,满足则再执行循环体,否则跳出循环程序的流程控制3种循环结构如何选择,要考虑几个因素首先分析业务问题是否是用循环来实现分析业务问题判断我们是否已经预先知道循环次数如果预先知道循环次数:用for循环如果预先不知道次数:用while循环若至少要执行一次循环:用do.while循环3种不同的循环结构其实可以相互转化,按照上面的规则来选择可以简化编程举例来说明如何选择不同结构的循环求1-1/3+1/5-1/7+1/9-1/11+的前50项的和选择循环,知道循环次数50则选用for循环求1-1/3+1/5-1/7+1/9-1/11+1/n,直到|1/n|满足1e-5的和选择循环,不知道次数则选用while循环分析循环体设计问题和循环的边界问题实现一个程序对输入的姓名进行循环判断,如果首字符是数字则要求重新输入,直到输入的信息的首字符不是数字,.,65,Java的流程控制语句,java.util.ScannerScannersc=newScanner(System.in);sc.next(),nextInt()sSc.nextLine(),nextDouble();课堂练习:通过键盘输入一个参数为整数n,输出该整数的阶乘值.测试:若输出int,则只能到15!;若输出为long,则只能到20!;若输出为float则只能到34!若输出为double,则可以到170!所以写一个程序要考虑:数据类型的范围,注释添加,输入参数的合理性publicclassTestFactpublicstaticvoidmain(Stringargs)intnumber=0;Scannersc=newScanner(System.in);System.out.println(“请输入一个整数:”);number=sc.nextInt();if(number=0)System.out.println(Error!);System.exit(0);doubleresult=1;for(inti=1;i=number;i+)result*=i;System.out.println(number+!=+result);,.,66,Java的流程控制语句,程序流程控制语句break;语句:跳出其所在的循环breakout;跳出out指示的那一层循环continue;跳出当次循环的剩余部分,直接进入下一次循环continueout;跳出out指示的那一层循环的当次循环,进入那一层循环的下次循环break,continue加标号的怎么用?什么时候用?即各个控制结构语句是可以嵌套的写TestBreak.java演示breakout的使用publicstaticvoidmain(Stringargs)out:for(inti=1;i=9;i+)for(intj=0;ji;j+)for(intk=0;kj;k+)for(intm=0;mk;m+)if(i+k+j+m=24)System.out.println(i*1000+j*100+k*10+m);breakout;,.,67,Java的数组,java的数组在内存中是连续空间数组用来一次定义相同类型的多个变量数组也是一个对象,可以有属性,但没有方法的如一维数组:inta;声明一个数组变量,可以不给数组长度,此时还不会给数组分配空间。当a=newint10;才会分配空间。数组名a是一个地址,是数组的引用,但绝不能执行a+,a-操作a.length的值是数组的长度,length是数组的属性数组的初始化写TestArray.java来打印数组元素和测试数组的初始化for(inti=0;ia.length;i+)/使用length可通用化,因为数组大小有可能发生变化System.out.print(ai+”);/会输出0表示,整型数组没有初始化时系统默认会给它赋值为0System.out.println();其他基本类型的数组没有初始化则系统也会赋值为相应类型的默认值Long:0L,float:0.0f,double:0.0char:u0000,boolean:false,.,68,Java的数组,对象类型的数组没有初始化则系统默认会赋值为nullStringstr=newString10;System.out.print(stri+”);数组的显示初始化:写入TestArray.java中测试inta=3,7,54,24,98,1,0,5;在定义数组a时就分配空间并初始化intb=newint4,6,8,32;第二个中间必须为空,后面才能用来初始化;这里产生了2个对象(数组对象,数组名引用)intb1=newint48,4,3,1;第二个中间有值则后面不能使用来初始化publicclassTestArray1publicstaticvoidmain(Stringargs)inta;/定义一个数组a=newint10;/为数组分配空间for(inti=0;ia.length;i+

温馨提示

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

最新文档

评论

0/150

提交评论