版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
项目一Java概述及开发环境搭建
【项目描述】下载并配置JDK开发工具,利用记事本编写第一个Java程序,程序运行输出“Hello,Java!”。【任务分解】
要实现本项目功能,我们可以分为以下三个任务来完成:1.认识Java。2.Java开发环境搭建。3.编写并运行第一个Java程序。4.Java与其它语言的比较。任务一认识Java【任务描述】
任务1-1:了解Java的发展历史;理解Java语言的特点以及Java程序的运行机制和Java虚拟机。一、Java的发展历史
1996年1月,第一个JDK-JDK1.0诞生。
1999年6月,SUN公司发布Java的三个版本:标准版(J2SE)、企业版(J2EE)和微型版(J2ME)。
2005年6月,JavaOne大会召开,SUN公司公开JavaSE6。J2EE更名为JavaEE,J2SE更名为JavaSE,J2ME更名为JavaME。
2006年12月,SUN公司发布JRE6.0。
2009年04月20日,甲骨文74亿美元收购Sun,取得Java的版权。
2011年7月,甲骨文公司发布Java7的正式版。二、Java语言的特点1.简单性2.面向对象面向对象的三个特征是:封装、多态性和继承。现实世界中的对象均有属性和行为,属性表示对象的数据,行为表示对象的方法。
3.可移植性
Java程序经过一次编译后可移植到别的系统上解释执行,如MS-DOS,Windows,Unix等任何平台上运行,具有很强的可移植性。4.Java语言是解释型的
Java程序在Java平台上被编译为字节码格式,然后可以在实现这个Java平台的任何系统中运行。5.交互式特性Java是面向对象的网络编程语言,由于它支持TCP/IP协议,使得用户可以通过浏览器访问到Internet上的各种动态对象。
6.多线程机制Java语言支持多线程机制,多线程机制使得Java程序能够并行处理多项任务。多线程机制可以很容易地实现网络上的交互式操作。
7.动态的内存管理机制8.Java是高性能的
与解释型的高级脚本语言相比,Java的确是高性能的。事实上,Java的运行速度随着JIT(Just-In-Time)编译器技术的发展越来越接近于C++。9.可靠性和安全性
由于Java主要用于网络应用程序开发,因此对安全性有较高的要求。Java通过自己的安全机制防止了病毒程序的产生和下载程序对本地系统的威胁破坏。
三、Java程序的运行机制和Java虚拟机1.Java程序的运行机制
Java语言具有解释性语言和编译性语言的特征。2.Java虚拟机(JVM)在Java中的所有程序都是在JVM(Java虚拟机)上运行的。JVM屏蔽了与具体操作系统相关信息,使得Java程序只需要产生在Java虚拟机上运行的目标代码(字节码),就可以在多种平台上不加修改地运行。图1.1Java虚拟机机制任务二Java开发环境搭建
【任务描述】
任务1-2:搭建Java开发环境。
一.Java平台简介Java提供了以下三个平台,分别:
JavaSE(JavaStandardEdition),Java的标准版,以前称为J2SE。JavaEE(JavaEnterpriseEdition),Java的企业版,以前称为J2EEJavaME(JavaMicroEdition),微型版,以前称为J2ME。二.JDK的安装与配置1.JDK的安装我们可以到甲骨文的官方网站(/technetwork/java/javase/downloads/index.html)免费下载一个JDK(JavaDevelopmentKit,Java开发工具)。JDK安装向导如图1.2。图1.2JDK的安装向导点击下一步,按照对话框提示逐步安装,这里我们选择默认的安装路径,也可以更改JDK安装路径。安装完成后,出现如图1.3的界面。图1.3JDK安装完成2.JDK的配置
配置环境变量的步骤如下:(1)在我的电脑”—>“系统属性”,在“系统属性”对话框中选择“高级”选项卡,在如图1.4的“系统属性”对话框中的“高级”选择卡中点击“环境变量”按钮,出现图1.5的“环境变量”对话框。新建一个名为为ClassPath的系统变量,变量值输入“.;C:\ProgramFiles\Java\jdk1.7.0_07”,如图1.6所示。图1.4“系统属性”对话框图1.5“环境变量”对话框图1.6新建ClassPath系统变量(2)在系统变量中,找到编辑Path变量,在末尾添加路径;C:\ProgramFiles\Java\jdk1.6.0_11\bin。如图1.7所示。图1.7编辑Path系统变量配置完JDK环境后,我们可以在命令行窗口中用Javac(回车)和Java(回车)命令来测试是否配置成功。若出现如图1.8和图1.9所示,表示配置成功。若配置不成功,修正系统变量的内容后,需重新打开命令行窗口再测试。
图1.8输入命令javac后的屏幕显示图1.9输入命令java后的屏幕显示任务三编写并运行第一个Java程序
【任务描述】
任务1-3:编写第一个Java程序,运行该程序,使得在控制台上输出信息“Hello,WelcometoJava!”跳至解题思路【必备知识】
一、什么是Java源程序。所谓源程序是指程序员从键盘上输入的还没有经过编译、解释等处理的最原始的程序代码。如用C语言编写的源程序后缀名为.C,用C++编写的源程序后缀名为.CPP,用Java语言编写的源程序后缀名为.java。二、Java中类的定义格式。Java类的定义格式:class类名{类的属性;类的方法(){}}(1)在Java中,类是用关键字class定义的,class后面是类名,类名是用户自定义的,只要满足一定的命名规则即可。(2)类体是由类名后的一对{}花括号括起来的内容,类的两个组成部分是类的属性和类的方法,属性和方法可以有多个。属性是描述类的静态特征,而方法是描述类的动态特征。(3)一个Java文件是可以由多个类组成的,但只能有一个public类,如果某一个类是用publicclass去声明的,则这个类称为主类,主类名要和Java源文件名一致,而且主方法main()只能定义在主类中。有关更多类的知识可参考项目四。【解题思路】
任务1-3:1.用关键字publicclass定义一个Hello类。2.在Hello类中添加一个主方法main(),主方法的定义为publicstaticvoidmain(Stringargs[])。3.在main()方法中,添加一条语句。重温任务描述【任务透析】1 publicclassHello{ 2 publicstaticvoidmain(Stringargs[]){ 3 System.out.println("Hello,WelcometoJava!"); 4 } 5 }
在以上程序段中:行1定义了一个名为Hello的公共类(class),每个Java程序至少包含有一个公共类。按Java语言规范,组成类名单词首字母应大写。
行2定义了一主方法main()。main()方法是Java程序的入口。
行3是主方法中定义的语句,方法中仅仅包含了一条System.out.println语句,这一语句的作用是在控制台上输出双引号中的内容。
行4该右花括号是表示主方法的结束,它和行2的左花括号对应,方法体是用一对花括号括起来的。行5该行的右花括号表示是类的结束,它是和行1的左花括号匹配,类体也是用一对花括号括起来的。
注意:Java源程序是大小敏感的(即区分大小写),所有括号、引号都是成对出现的,并且都是英文符号。1.4.2编译和执行一个Java程序
方法一:利用记事本写Java程序,利用命令行方式进行编译、运行Java程序。
我们将任务1-3的源代码写在记事本(notepad)上,并命名为Hello,同时把后缀名.txt改成.java,然后保存。为了便于后面的讲解,这里我们把它保存在D盘JDemo(d:\jdemo)目录下。接下来我们打开CMD(Commandprompt),切换到Hello.java源代码文件所在的目录下。这里用下述语句切换到D:\JDemo目录下。 d:(Enter) cdjdemo(Enter)我们用盘符带冒号,如D:命令,可以切换到D盘下;cd命令带文件名可以在同盘下切换,切回上级目录使用cd..命令。图1.10用javac命令编译和java命令运行Hello程序后的结果
用javacHello.java命令,执行对Hello.java源文件的编译,如果没有语法错误,编译器(Compiler)将会生成一个扩展名为.class字节码文件(Hello.class);如果编译时有语法错误,编译器会报错,当然也不会生成字节码文件。我们需要修改源代码,然后再重新编译,直到能通过编译。
用javaHello命令,执行Hello程序,并显示结果,输出“Hello!WelcometoJava!”。如图1.10所示。方法二:
我们还可以用JavaIDE(IntegretedDevelopmentEnvironment,集成开发环境)编写、编译并执行Java源程序。我们这里用的是MyEclipse8.0,IDE便于我们开发和调试程序。不像记事本方式,每次都得在CMD下用命令行语句进行编译和执行,才能看到程序的结果。创建Java程序的步骤如下:步骤一,选择工作空间。打开MyEclipse并将工作空间目录设为D:\jdemo,如图1.11所示。工作空间是项目文件的存放目录。这里也可以使用默认的工作空间,此时项目文件是存放在默认工作空间目录下。图1.11启动MyEclipse进入选择工作空间页面步骤二,创建Java项目。在MyEclipse主界面的“文件”菜单中选择“新建”命令,在弹出的下一级菜单中选择“Java项目”。如图1.12所示。图1.12利用“文件”菜单新建“Java项目”在弹出的“新建Java项目”对话框中,输入项目名Hello,点击完成,即创建了名为“Hello”的Java项目。图1.13所示。图1.13新建Java项目对话框步骤三,创建Java类。在资源管理器中,点击“Hello”项目展开后,对着“src”包右击(src是系统默认的default包,实际上这里也可以对着项目右击先创建一个包),在弹出的快捷菜单中,选择“新建”命令,在出现的下一级子菜单中选择“类”。如图1.14所示。
图1.14在默认的src包底下新建一个类
在弹出的“新建Java类”对话框中,输入类名称:Hi,并在下方的多项选择框中,选中“publicstaticvoidmain(String[]args)”选项,点击完成。如图1.15所示。图1.15新建Java类对话框步骤四,编辑Java源程序(类文件)。在建好的Hi类的main()方法中,添加代码System.out.println("HelloJava");。步骤五,运行Java程序。编辑好源文件后,在代码屏幕空白处右击,在弹出的快捷菜单中,选择“运行方式”,进一步选中“Java应用程序”。如图1.16所示。图1.16利用快捷菜单运行Java应用程序图1.17“保存并启动“对话框在图1.17的“保存并启动对话框”中(默认选中当前的应用程序Hi.java),点击“确定”按钮,运行结果如图1.18所示。图1.18Hi.java的运行结果小结:我们分别介绍了记事本和集成开发环境两种方法编写、编译并执行我们第一个Java程序。不管用哪种方式,如果程序中存在错误,是不能得到运行结果的,必须要将程序的错误改正后,最后才能查看程序的运行结果。
【课堂提问】★用记事本编写好Java源程序后,要想得到运行结果,需要执行哪些操作?★用MyEclipse编写好Java源程序后,要想看到运行结果,该如何操作?
【现场演练】请你也分别利用记事本和MyEclipse编写、运行你的第一个Java程序,向世界发出一声问候吧。任务四Java与其它语言的比较
一、Java与C#比较C#与Java是很多相似之处,不但在语法、语言特征上,运用方面也很相似,都能用以B/S和C/S(桌面应用程序,和分布式网络的开发)的开发。只是Java是在C++的基础上建立,而C#在Java的基础上发展而来的。
Java是开源的,跨平台、安全性高、开发成本较低,相对而言,Java比较难学、不容易架构、开发周期长。但用Java开发的软件可扩展性好,可维护性强。二、Java与PHP比较PHP(HypertextPreprocessor)是一种完全开源、能快速学习、跨平台(Windows与UNIX)、有良好数据库交互能力的开发语言,简单轻便、易学易,与Apache及其它扩展库结合紧密、良好的安全性。Java效率比PHP要高,两者都是开源的,两者都可以跨平台,但PHP只能开发B/S程序,Java可开发B/S和C/S程序。相对而言,Java比较难学、不容易架构、开发周期长,但用Java开发的软件可扩展性好,可维护性强。项目二Java语言编程基础
【项目描述】常用的编程元素——常量与变量;数据分类法——数据类型;编程部件——运算符、表达式与语句;程序执行方向——程序控制结构。【任务分解】
本项目可分解为以下几个任务:1.数据类型与常量、变量。2.运算符和表达式与语句。3.程序控制结构。任务一
数据类型与常量、变量
【任务描述】任务2-1:声明两个整型变量x和y,分别赋予它们初始值5和8,求两数之和,并输出结果。跳至解题思路【必备知识】1.认识标识符Java对标识符定义的规定:标识符可以由字母、数字、下划线(_)或美元符号($)组成。标识符必须以字母、下划线(_)或美元符号($)开头。标识符长度不限,但在实际中不宜过长。标识符区分大小写,例如:Myworld与myworld是不同的。标识符不能与关键字(保留字)同名。2.认识关键字abstractassertbooleanbreakbytecasecatchcharclassconstcontinuedefaultdodoubleelseextendsfinalfinallyfloatforgotoifimplementsimportinnerinstanceofintinterfacelongnativenewnulloperatorouterpackageprivateprotectedpublicreturnshortstaticsuperstrictfpswitchsynchronizedthisthrowtransienttryvoidvolatilewhileenumthrows3.认识数据类型Java的数据类型可以分为两大类:基本数据类型与引用数据类型。4.认识常量常量是指在程序运行过程中其值始终保持不变的量。常量共包含以下6类。(1)整型常量表2.2Java整型数据的取值范围(2)浮点型常量如果不明确指明浮点数的类型,浮点数默认为double。如:3.141592(double型浮点数)2.08E25(double型浮点数)6.56f(float型浮点数)(3)字符型常量字符型常量是由一对单引号包含起来的单个字符。例如:‘a’,‘2’。(4)字符串常量字符串型常量是由一对双引号括起来的,0个或多个字符组成的一个字符序列。如:“stu”。(5)布尔型常量布尔型常量只能取值为true和false,其中true表示逻辑真,false表示逻辑假。(6)null常量null常量只有一个值,用null表示,表示为空。5.认识变量(1)变量的命名规则变量也是一种标识符,所以它也遵循标识符的命名规则。(2)声明变量变量声明格式为:类型名变量名[=常量];示例1:声明整型变量。public
classExample2_1{
public
static
voidmain(String[]args){
inta=016;//声明int型变量a,并赋予它初值为八进制数16
intb=3;
intc=0x15;
longy=123456L; System.out.println("a="+a);//输出a的值 System.out.println("b="+b); System.out.println("c="+c);System.out.println("y="+y);}}示例2:声明单精度和双精度类型变量。代码请参考Example2_2。示例3:声明字符类型变量。代码请参考Example2_3。示例4:声明字符串类型变量。publicclassExample2_4{ publicstaticvoidmain(String[]args){ Stringstr1="Hello"; Stringstr2="123"; System.out.println("str1="+str1); System.out.println("str2="+str2); }}示例分析:在本例中,声明了String类型(即字符串类型)变量str1和str2,并分别给它们赋予初始值“Hello”和“123”,调用println()方法在屏幕上显示两个变量的值。(3)变量的作用域变量是有作用范围的,一旦超出它的范围,就无法再使用这个变量。按作用范围进行划分,变量分为成员变量和局部变量。1)成员变量在类体中定义的变量为成员变量。它的作用范围为整个类,也就是说在这个类中都可以访问到定义的这个成员变量。示例6:成员变量的作用范围。代码请参考Example2_6。2)局部变量Java可以在程序的任何地方声明变量,当然也可以在循环里声明。有趣的是,在循环里声明的变量只是局部变量,只要跳出循环,这个变量便不能再使用。示例7:局部变量的作用范围。代码请参考Example2_7。【解题思路】
任务2-1:1.首先分析确定要使用多少个变量,声明两个int型的变量。2.分别赋予它们初始值。3.再声明一个int型的变量,用于存放两数之和。在声明求和的变量时,一般要将其初始值设为0。4.调用println()方法在屏幕上显示所求的和。重温任务描述【任务透析】//ClassDemo2_1Test.javapublicclassClassDemo2_1Test{ publicstaticvoidmain(String[]args){ intx=5; inty=8; intsum=0; sum=x+y; System.out.println("sum="+sum); }}【现场演练】有三门课程成绩,通过使用“声明变量”和“赋予初始值”的知识,完成求三门课程的平均分,并输出所求的平均分。示例分析:把变量i声明在for循环里,因此变量i在此就是局部变量,它的有效范围仅在for循环开始和结束之间(即5~9行),只要一离开这个范围,变量i便无法使用。相对而言,变量sum是声明在main()方法的开始处,因此它的有效范围从(03~09)行,当然,for循环内也属于变量sum的有效范围。任务二
运算符、表达式与语句
【任务描述】任务2-2:(1)已知a=13,b=4,求a/b,(float)a/b,a%b,((a>10)&&(b<5))的值;(2)已知i=3,j=3,求x=i++,i,y=++j,j的值;(3)计算12+5>3||12-5<7表达式的值。求结果,并按给定的变量和初始值编写程序验证结果。跳至解题思路【必备知识】1.运算符。(1)赋值运算符赋值运算符是“=”,通过一个示例来讲解赋值运算符的用法。示例10:在程序中用“=”赋值。代码请参考Example2_10。(2)算术运算符数据类型精度的次序:byte<short<int<long<float<double。例如:20+3//结果是286*5//结果是309/4//结果是29/4.0//结果是2.259%4//结果是19%4.0//结果是1.0-9%5//结果是-4(3)关系运算符比较两个值是否满足某种关系。如果满足,则返回“true”(真),否则返回“false”(假)。关系运算符都是二元运算符,见表2.6。12.5>9.5//结果是true25!=25//结果是false3==3//结果是true‘T’<‘a’//结果是true(4)递增与递减运算符(5)逻辑运算符(6)位运算符位运算是对整数类型的操作数按二进制的位进行运算,运算结果仍然是整数类型值。在Java语言中位运算的操作数只能为整型和字符型数据。具体运算符见表2.8所示。(7)条件运算符条件运算符格式为:表达式1?表达式2:表达式3intmin,x=5,y=19;min=(x<y)?x:y;//(x<y)=(5<19)的值是true,取x的值,即min=x=4;2.运算符的优先级运算符的优先级及结合性见表2.10。3.表达式表达式是由常量、变量或是其他操作数与运算符所组合而成的语句。例如下面均是正确的表达式:-49//表达式由一元运算符“﹣”与常量49组成sum+2//表达式由变量sum、算术运算符“+”与常量2所组成a+b-c/(d*3)//表达式由变量、常量与运算符所组成4.语句在学会使用运算符和表达式后,就可以写出最基本的Java程序语句了。语句用来向计算机系统发出操作指令。程序由一系列语句组成。Java语言中的语句主要分为以下几类:(1)表达式语句Java语言中最常见的语句是表达式语句,其形式如下:表达式;例如:a+b(2)空语句空语句只有分号,没有内容,不执行任何操作。设计空语句是为了语法需要。例如,循环语句的循环体中如果仅有一条空语句,表示执行空循环。例如:for(inti=0;;i++){}(3)复合语句(4)声明语句(5)赋值语句(6)控制语句控制语句完成一定的控制功能,包括选择语句、循环语句和转移语句。【解题思路】
任务2-2:1.声明变量。2.给变量赋初值。3.按要求计算。4.调用println()方法在屏幕上显示所求的值。重温任务描述【任务透析】//ClassDemo2_2Test.java
public
classClassDemo2_2Test{
public
static
voidmain(String[]args){ /*(1)已知a=13,b=4, *求a/b,(float)a/b,a%b,((a>10)&&(b<5))的值。 */ 01inta=13,b=4; 02System.out.println("(1)的结果为:"); 03System.out.println("a/b="+(a/b));04System.out.println("(float)a/b="+(float)(a/b)); 05System.out.println("a%b="+(a%b)); 06System.out.println("((a>10)&&(b<5))="+((a>10)&&(b<5))); /*(2)已知i=3,j=3, *求x=i++,i,y=++j,j的值。 */ 07inti=3,j=3,x,y; 08x=i++; 09y=++j; 10System.out.println("(2)的结果为:"); 11System.out.println("x="+x+",i="+i); 12System.out.println("y="+y+",j="+j); /* *计算12+5>3||12-5<7表达式的值
*/ 13System.out.println("(3)的结果为:"); 14System.out.println(12+5>3||12-5<7); }}【现场演练】inti=15,j1,j2,j3,j4,(1)j1=i++,求j1和i值;(2)j2=++i,求j2和i值;(3)j3=i--,求j3和i值;(4)j4=--i,求j4和i值。【知识链接】复合赋值运算符任务三
程序控制结构
【任务描述】任务2-3-1:公共汽车买票问题:乘客上车时显示Welcome;输入乘客年龄;如果年龄小于8岁或大于60岁,免票显示OK,否则显示:2yuan。任务2-3-2:分别用for语句、while语句和do…while语句求1+2+…+100。任务2-3-3:编程输入成绩(0~100分数),根据输入的百分制按五分制的成绩输出(排除不可能的分数)。百分制与五分制之间的关系见表2.12。跳至解题思路任务2-3-4:用for循环完成如下所示的图形。【必备知识】1.程序的结构设计一般来说程序的结构包含以下3种:1、顺序结构2、选择结构3、循环结构这3种不同的结构有一个共同点,就是它们都只有一个入口,也只有一个出口。程序中使用了上面这些结构到底有什么好处呢?这些单一入、出口可以让程序易读、好维护,也可以减少调试的时间。2.顺序结构结构化程序的最简单的结构就是顺序结构,所谓顺序结构就是按书写顺序执行的语句构成的程序段,其流程如图2-2所示。示例11:将华氏温度转换为摄氏温度。摄氏温度c和华氏温度f之间的关系为:c=5(f-32)/9。public
classExample2_11{
public
static
voidmain(String[]args){
floatf,c; f=70.0f; c=5*(f-32)/9; System.out.println("f="+f); System.out.println("c="+c); }}示例分析:main()方法中声明了f和c两个float类型的变量,分别表示华氏温度和对应的摄氏温度,接着给f赋值70.0,通过5*(f-32)/9计算对应的摄氏温度,最后输出f和c的值。main()方法中,各语句按照书写的先后次序顺序执行,属于顺序结构。3.选择结构
程序中有些程序段的执行是有条件的,当条件成立时,执行一些程序段;当条件不成立时,执行另一些程序段,或不执行,称为选择结构。选择结构程序通过Java提供的选择语句对给定条件进行判断,根据条件的满足与否,执行对应的语句。选择语句有两种:if语句和switch语句。(1)if语句if语句也叫条件语句,它根据条件表达式的值来选择将要执行的语句。可以实现单分支、双分支和多分支等选择结构。形式一:if语句实现单分支选择结构。其使用格式如下:If(条件表达式){
语句主体}示例12:用if语句实现单分支选择结构。代码请参考Example2_12。形式二:if-else语句实现双分支选择结构。其使用格式如下:if(条件表达式){ 语句主体1;}else{语句主体2;}其流程图如图2-4所示。图2-4双分支选择结构的流程图示例13:用if…else语句实现双分支选择结构。代码请参考Example2_13。形式三:嵌套的if-else语句实现多分支选择结构。其使用格式如下:if(条件表达式1){
语句主体1;}elseif(条件表达式2){
语句主体2;}…//多个elseif()语句else{
语句主体n;}示例14:用嵌套的if…else语句,实现多分支选择结构。y和x的函数关系如表2.13所示,编写由x计算y的程序。public
classExample2_14{
public
static
voidmain(String[]args){
floatx,y; x=Float.parseFloat(args[0]);
if(x<0) y=0;
else
if(x>0&&x<=10) y=x;
else
if(x>10&&x<=20) y=10;
else y=0.5f*x+20; System.out.println("x="+x); System.out.println("y="+y); }}(2)switch语句---多分支选择语句switch语句能够根据给定表达式的值,从多个分支中选择一个分支来执行。其使用的格式如下:switch(表达式){ case选择值1:语句主体1;break; case选择值2:语句主体2;break; …… case选择值n:语句主体n;break; default:语句主体;}功能说明:1)switch语句先计算括号中表达式的结果。2)根据表达式的值检测是否符合执行case后面的选择值,若是所有case的选择值皆不符合,则执行default所包含的语句,执行完毕即离开switch语句。3)如果某个case的选择值符合表达式的结果,就会执行该case所包含的语句,直到遇到break语句后才离开switch语句。4)若是没有在case语句结尾处加上break语句,则会一直执行到switch语句的尾端才会离开switch语句。5)若是没有定义default该执行的语句,则什么也不会执行,而是直接离开switch语句。6)若选择值为字符时,必须用单引号将字符包围起来。switch语句的流程图示例15:通过命令行输入1~12之间的一个整数,输出相应月分的英文单词(使用switch语句处理)。代码请参考Example2_15。4.循环结构循环结构包括while语句、do…while语句和for语句。(1)while语句while循环的格式如下:while(判断条件){
语句1;
语句2;
…语句n;}功能说明:先计算“判断条件”的值,若判断条件的值为真(true),则执行循环体中的语句;再计算“判断条件”的值,若判断条件的值为真(true),再执行循环体的语句,形成循环,直到判断条件的值为假(false),结束循环,执行while语句后面的语句。
循环流程图示例16:while循环的使用。01public
classExample2_16{02 public
static
voidmain(String[]args){03 inti=1,sum=0;04 while(i<=10){05 sum+=i;//累加计算06 i++;07 }08 System.out.println("1+2+...+10="+sum);09 }
(2)do…while语句do…while循环的格式如下:do{语句1;
语句2;
…语句n;}while(判断条件);示例17:do…while循环的使用代码请参考Example2_17。(3)for语句for循环的格式如下:for(赋值初值;判断条件;赋值增减量){语句1;
语句2;
…语句n;}若是在循环主体中要处理的语句只有1个,可以将大括号去掉。for循环流程图(4)循环嵌套当循环语句中又出现循环语句时,就称为嵌套循环,如嵌套for循环,如嵌套while循环等。当然也可以使用混合嵌套循环,也就是循环中又有其他不同种类的循环。例如:for(;;)//外循环开始{for(;;)//内循环开始 {……}//内循环结束}//外循环结束for(;;)//外循环开始{do{//内循环开始 ……}while();//内循环结束}//外循环结束
5.循环跳转语句(1)break语句(2)continue语句示例21:break语句的使用代码请参考Example2_21。示例22:continue语句的使用代码请参考Example2_22。【解题思路】
任务2_3_1:“年龄小于8岁或年大小于60岁”的数学表达式为“age<8||age>60”。任务2_3_2:while循环语句的特点是:先判断,后执行;do-while循环语句的特点是:先执行,后判断。任务2_3_3:用嵌套的if-else语句时,要注意else和if的匹配问题。当有多种分支时,使用switch-case语句会让程序更容易理解。任务2_3_4:声明3个控制变量i、sapce、star。i变量控制行数,space变量控制空格数,star变量控制图形数,由for循环嵌套完成整个图形的输出。
重温任务描述【任务透析】//ClassDemo2_3_1Test.javapublic
classClassDemo2_3_1Test{
public
static
voidmain(String[]args){ System.out.println("Welcome"); Shortage; age=Short.parseShort(args[0]);
if(age<8||age>60) System.out.println("Ok");
else System.out.println("2yuan"); }}//ClassDemo2_3_2Test.javapublic
classClassDemo2_3_2Test{
public
static
voidmain(String[]args){ //用while循环语句完成
inti=1,sum1=0;
while(i<=100) { sum1+=i; i++; } System.out.println("while语句:1+2+...+100="+sum1); //用do...while循环语句完成
intj=1,sum2=0;
do{ sum2+=j; j++; }while(j<=100); System.out.println("do...while语句:1+2+...+100="+sum2); //用for循环语句完成
intk=1,sum3=0;
for(k=1;k<=100;k++) sum3+=k; System.out.println("for语句:1+2+...+100="+sum3); }}//ClassDemo2_3_3Test.javapublic
classClassDemo2_3_3Test{
public
static
voidmain(String[]args){ //嵌套的if语句完成
intscore;
chargrade; score=(int)Float.parseFloat(args[0]);
if(score>=0&&score<=100) {
if(score>89) grade='5';
else
if(score>79) grade='4';
else
if(score>59) grade='3';
else grade='2'; System.out.println("gradeis"+grade); }
else System.out.println("dateerror!");//if语句+嵌套的switch完成
ints,score2;
chargrade2='0'; score2=(int)Float.parseFloat(args[0]);
if(score2>=0&&score2<=100) { s=score2/10;
switch(s) {
case0:case1:case2:case3:case4:
case5:grade2='2';break;
case6:
case7:grade2='3';break;
case8:grade2='4';break;
case9:case10:grade2='5';break; } System.out.println("grade2is"+grade2); }
else System.out.println("dateerror!"); }}//ClassDemo2_3_4Test.javapublic
classClassDemo2_3_4Test{
public
static
voidmain(String[]args){
inti,space,star;
for(i=1;i<=6;i++) {
for(space=1;space<=6-i;space++) System.out.print("");
for(star=1;star<=i;star++) System.out.print("*"); System.out.print("\n"); } }}【课堂提问】1.在任务2_3_1中,如果在命令行参数中输入:20,程序运行结果会是什么呢?2.在任务2_3_2中,while循环和do-while循环最大的区别是什么呢?3.在任务2_3_3中,如果在命令行参数中输入:120,程序运行结果会是什么呢?如果在命令行参数中输入入:68,程序运行结果又是什么呢?【现场演练】计算:1-3+5-9+。。。-99的值。项目三数组与方法
相关词汇:1、array
:数组2、element:元素3、row:行4、column
:列5、length
:长度6、dimension:维7、substring:字串8、subscript:下标9、method:方法10、parameter:参数11、formalparameter:形参12、actualparameter:实参13、returnvalue:返回值14、default:缺省【项目描述】本项目介绍数组与方法的联合使用。要求掌握数组的定义及应用;方法的定义及应用;数组作为参数的具体应用。【任务分解】
本项目可分解为以下几个任务:1.数组的定义及使用。2.方法的定义及使用。3.数组参数。【任务描述】任务3-1:编写程序,定义一个一维数组,给数组各元素赋值,并求数组元素的最大值和最小值;定义一个二维数组中biAarry,初始化数组并输出数组的各元素。[跳至解题思路]【必备知识】1.一维数组的声明及使用(1)一维数组的声明与内存的分配
如:intscore[];score=newint[10];除了用两行来声明并分配内存给数组之外,也可以用较为简洁的方式,把两行缩成一行来编写,其格式如下:数据类型
数组名[]=new数据类型[num];上述例子等价于如下写法:intscore[]=newint[10](2)一维数组中元素的表示方法数组下标的最小值为0,最大值为num-1。以一个score[10]的整型数组为例,score[0]代表第1个元素,score[1]代表第2个元素,score[9]为数组中的第10个元素(也就是最后一个元素)。示例1:一维数组的使用。01public
classExample3_1{02 public
static
voidmain(String[]args){03 inti;04 inta[];//声明一整型数组a,此时仅开辟堆内存空间05 a=new
int[3];//开辟栈内存空间供整型数组a使用,其元素个数为306 for(i=0;i<3;i++)//输出数组a07 System.out.print("a["+i+"]="+a[i]+"\t");08 System.out.println("\n数组长度是:"+a.length);//输出数组长度09 }10}【运行结果】a[0]=0 a[1]=0 a[2]=0 数组长度是:3(3)一维数组的初始化1)赋初值初始化数组如果想直接在声明时就对数组赋初值,可以利用大括号完成。只要在数组的声明格式后面再加上初值的赋值则可,如下面的格式所示:数据类型
数组名[]={初值0,初值1,…初值n};示例2:一维数组的初始化。01public
classExample3_2{02 public
static
voidmain(String[]args){03 inti;04 inta[]={15,29,38};//声明一个整数数组a,并赋初值(初始化)05 for(i=0;i<a.length;i++)//输出数组的内容06 System.out.print("a["+i+"]="+a[i]+"\t");07 System.out.println("\n数组长度是:"+a.length);08 }09}【运行结果】a[0]=15a[1]=29 a[2]=38 数组长度是:3示例分析:除了在声明的同时为数组赋初值,也可以在程序中为某个特定的数组元素赋值。可以将程序和第4行更改成下面的程序片段:inta[]=newint[3];a[0]=15;a[1]=29;a[2]=38;2)用new初始化数组
2.二维数组的定义及使用(1)二维数组的声明与内存的分配1)其声明与分配内存的格式如下:数据类型
数组名[][];
//声明二维数组格式1或数据类型[][]数组名;
//声明二维数组格式2数组名=new数据类型[行的个数][列的个数];//分配内存给数组同样,也可用下面的格式来声明数组:数据类型
数组名[][]=new数据类型[行的个数][列的个数];
3.字符数组:char[]ch1={'H,'e','l','l','o'};字符串中所包含的字符个数称为字符串长度,如“Hello”的长度为5。要表示长度为50的字符串,虽然可以使用如下的字符数组:char[]ch1=newchar[50];但由于字符个数太多,致使数组元素太多,使用起来极其不方便。为此,Java提供了String类,通过建立String类的对象使用字符串特别方便。
4.字符串字符串是字符组成的序列,是编程中常用的数据类型。字符串可用来表示标题、名称和地址等。(1)字符串变量的声明和初始化其格式如下:String字符串变量名;字符串变量名=newString();也可以将两条语句合并为一条语句,格式如下:String字符串变量名=newString();
例如:Stringstr;str=newString();等价于:Stringstr=newString();(2)字符串赋值
分别为字符串变量s1、s2和s3赋值:s1=“people”;s2=s1;s3=“China”+s1;结果s2的值为“people”,s3的值为“Chinapeople”。其中运算符“+”的作用是将前后两个字符串连接起来。
(3)字符串的输出例如:Stringstr=newString();str=“beautifulgirl!”;System.out.println(str);输出结果为:
beautifulgirl!
示例4:代码请参考Example3_4。重温任务描述
【解题思路】任务3-1:
1.声明一维数组,利用随机函数给数组元素赋值。2.定义变量min和max,分别用于保存最小值和最大值,假定一开始最大值和最小值都是a[0]元素。3.利用for循环,将a[1]~a[9]元素逐一和min、max进行比较,一旦也更小或更大值,马上置换当前的最小、最大值。4.输出max和min。5.声明一个二维数组中biAarry并初始化。6.利用两重循环输出二维数组的各元素。【任务透析】publicclassClassDemo3_1Test{ publicstaticvoidmain(String[]args){ //随机输入一个整数,计算一维数组中最大值、最小值 intm=Integer.parseInt(args[0]);//通过形参数组args[0]元素接收一个整数m inta[]=newint[m];//构造一个有m个元素的一维数组a System.out.println("随机生成的一维数组:");
for(inti=0;i<m;i++) { a[i]=(int)(100*Math.random()); System.out.println(a[i]+""); } intmin,max; min=a[0]; max=a[0]; for(inti=1;i<m;i++) { if(a[i]<min) min=a[i];
if(a[i]>max) max=a[i]; } System.out.println("\n此数组中最大值是:"+max); System.out.println("\n此数组中最小值是:"+min);
//定义并初始化二维数组biAarry
int[][]biAarry={{10,20},{3,4},{55,66},{41,42}}; //打印biAarry数组元素的内容 System.out.println("\n二维数组biAarry的各个元素是:");
for(inti=0;i<4;i++) {
for(intj=0;j<2;j++) System.out.print(biAarry[i][j]+"\t"); System.out.println(); } }}本示例中,分别演示了一维数组和二维数组的使用。
实际上,在定义并初始化数组时,也可以只给部分元素赋值,没有赋值的元素默认为0。【课堂提问】在输出数组元素时,能否不使用循环语句逐一元素输出,而直接输出数组名呢?在任务3-1中,如果在求一维数组最大值和最小值的同时,要求输出最大值和最小值元素的下标,该如何实现呢?
【现场演练】
编程计算1~9的平方值,将结果保存在一个一维数组之中。任务二
方法的定义及使用
【任务描述】任务3-2:编写程序,定义一个变量,并赋予初值,利用方法调用输出所求的值。跳至解题思路【必备知识】
1.方法的定义
方法的基本组成部分包括以下四部分:返回值方法名参数列表方法主体
[格式3-1方法定义]:[修饰符]返回值类型
方法名称(类型参数1,类型参数2,…){程序主体
程序语句; return表达式;}2.方法的调用调用方法,即执行该方法。调用方法的形式如下:(1)方法表达式对于有返回值的方法作为表达式或表达式的一部分来调用,其形式为:方法名([实际参数表])
说明:
①实际参数表是传递给该方法的诸参数,实际参数简称为实参。实参可以是常量、变量或表达式,相邻的两个实参之间用逗号分隔。
②方法调用的过程是,将实参传递给形参,然后执行方法体,当被调方法运行结束后,从调用该方法的语句的下一句处继续执行。
③实参的个数、顺序、类型和形参要一一对应。
参数传递方式:1、值传递:指实参传递给形参的是一个值。其特点是:形参的改变不会影响实参。2、引用传递:(2)方法语句对无返回值的方法以独立语句的方式调用,其形式如下:方法名([实际参数表]);
示例7:以方法表达式方式调用方法
代码请参考Example3_7。示例8:有参方法,以方法语句方式调用。
代码请参考Example3_8。示例9:无参方法,以方法语句方式调用。重温任务描述【解题思路】
任务3-2:1.在main()方法中声明所需的变量。2.要赋初始值的变量,先赋予它们初始值。3.方法调用。4.在main()方法外定义调用的方法。5、输出所求的值。【任务透析】01
public
classClassDemo3_2Test{02 static
intsum(intx,inty,intz)03 {04 ints;05 s=x+y+z;06 return(s);07 }08 public
static
voidmain(String[]args){09 inta=10,b=20,c=30;10 intresult=sum(a,b,c);11 System.out.println("result="+result);12 }13}在main()方法第9行声明了3个整型变量a,b,c,并分别赋予它们初始值为10,20,30。在第10行通过sum(a,b,c)调用方法sum(),实参为a,b,c,形参为x,y,z。在2-7行执行方法sum(),首先将实参a的值传递给x,将实参b的值传递给y,将实参c的值传递给z,然后执行sum()的方法体,求得3个整数的和为60,将结果赋给s,当执行return语句时,方法sum()结束,返回的值为60,并回到调用该方法的赋值语句,即第10行,将返回值60赋给变量。最后执行输出语句,输出变量result的值。【现场演练】运用方法的知识,求三个整数的最大值?方法的重载方法的重载就是在同一类中允许同时存在一个以上的同名方法,只要它们的参数个数或类型不同即可。在这种情况下,该方法就叫被重载了,这个过程称为方法的重载。示例3-12:方法的重载
代码请参考Example3_12。
参数传递方式:1、值传递:指实参传递给形参的是一个值。其特点是:形参的改变不会影响实参。int、float、double、char2、引用传递:指实参传递给形参的是一个地址(引用)。任务三
数组参数
【任务描述】
任务3-3:编写程序,定义一个数组,并赋予初值,利用方法调用输出所求的值。
跳至解题思路【必备知识】在Java中,允许方法调用的参数是数组。在使用数组参数时,应该注意以下事项:(1)在形参表中,数组名后的括号不能省略,括号个数和数组的维数相等。不需给出数组元素的个数。(2)在实参表中,数组名后不需括号。(3)数组名做实际参数时,传递的是地址,而不是值,即形参和实参具有相同的存储单元。
示例13:展示一维数组参数传递地址的特性。代码请参考Example3_13。示例14:展示二维数组参数传递地址的特性。代码请参考Example3_14。综合应用:编写一个sort()方法,将数组元素按大到小顺序排序。在main()方法中调用,观察方法调用前后输出的结果。递归调用:方法自己调用自己。案例:把求1-100之和的程序改为用方法的递归调用来实现。递归调用时必须有一个明确的结束条件,要不断改变传入的数据(实参),才可以实现递归的调用。1+2+3+4+。。。。100=?100+99+98+。。。2+1=?sum(100)100+sum(99)+99+sum(98)+……..2+sum(1)1
【示例3-15】返回数组的方法。01public
classExample3_15{02 public
static
void
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年高二化学选择性必修2(人教版)同步课件 第二章 第三节 第2课时 分子间的作用力 分子的手性
- 湖南省长沙市长沙市麓共体联考2024-2025学年九年级上学期12月月考语文试题(含答案)
- 高一 上册 人教版 英语 必修 第五单元《Lesson Five Reading for writing》课件
- 医学教材 肠穿孔的护理学习资料
- 勿忘国耻爱我中华中国人民抗日战争暨世界反法西斯战争胜利70周年专题党课宣讲课件
- 2.5 分压式偏置共射放大电路的分析
- 《肺的淋巴引流》课件
- 2024年高一上学期期末物理考点《有关牛顿第二定律的瞬间问题》含答案解析
- 《病毒与亚病毒》课件
- 《组织切片技术》课件
- JTT325-2013 营运客车类型划分及等级评定
- 中国旗帜行业市场现状分析及竞争格局与投资发展研究报告2024-2029版
- 激发学生学习兴趣的方法
- 重建道观计划书
- 污水厂电气安全培训课件
- 应对突发事件技巧
- 广告学专业大学生职业规划
- 导管相关性血流感染通用课件
- 人工智能在矿产资源勘探中的应用
- 三年级上册分数大小比较100题及答案
- 2024年学校高一新生入学分班实施方案
评论
0/150
提交评论