《Java程序设计基础陈建飞第8章.ppt》由会员分享,可在线阅读,更多相关《Java程序设计基础陈建飞第8章.ppt(36页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、第八章 方 法 回 顾r选择和循环混合程序设计预习检查r类的方法由哪几部分组成?r使用什么关键字定义包和导入包?rJavaDoc怎样写注释?目 标r分而治之的思想rJava方法的语法r如何实现方法r如何调用方法r包问 题r假设你已成功地编写了计算素数的代码,但如果在另一个程序中也需要计算素数那该怎么办呢?重用的思想r软件重用是指在两次或多次不同的软件开发过程中重复使用相同或相似软件元素的过程r可重用性一直是软件工程所追求的目标之一,软件工程界希望有一天能和其它工业领域一样,利用标准化的软件模块快速构建特定的应用系统 问 题r假设你们小组一起完成一个完整ATM的编码,怎么做呢?大家聚在一台机器前
2、编写?分开编写又如何集成在一起呢?分而治之的思想r任何一个可以用计算机求解的问题所需的时间都与其规模有关。问题规模越小,解题所需的计算时间往往也越少,从而也越容易计算。想直接解决一个较大的问题,有时是相当困难的 r分治法的思想就是,将一个难以直接解决的大问题,分割成一些规模较小的相同问题,以便各个击破,分而治之 分而治之的思想方法的概述r计算机编程常常将问题划分成称为“方法”的模块,每个方法实现一项非常专一的功能方法的格式rJava的方法类似于其它语言的函数,是一段用来完成特定功能的代码片段,声明格式:修饰符1 修饰符2 返回值类型 方法名(形参列表)Java语句;比如main方法:publi
3、c static void main(String args)代码块 访问修饰符访问修饰符返回类型方法名参数列表方法体方法格式具体说明r方法名可以是任何有效的标识符,命名规则和变量一样 r返回类型是该方法返回给调用函数的数据类型r形参列表中是一份用逗号隔开的列表,其中包含对传递给方法的参数的声明r方法名、返回类型和参数列表定义了方法签名,即唯一识别该方法的“签名”r例如:int add(int a,int b)void showMessage(int id)boolean del(int id)访问修饰符rpublic表明定义的方法是公共的,可以在任何程序中调用rstatic表明定义的方法是静
4、态的,可以直接在main方法中使用返回类型与返回值r返回类型可以是任何一种数据类型或对象类型 含义为方法要返回的值的类型 如果没有返回类型,使用voidr返回值是指方法执行以后具体返回的结果值r在方法体中使用return关键字结束方法,返回具体结果值课堂演示r实现max()方法,返回两个参数最大的一个方法的调用r在定义方法之后,就可以在程序中调用它r如果该方法有返回值(返回类型不是空值),那就可以将结果赋给一个变量,或在表达式中使用该结果 r调用的格式:方法名(实参列表)形参和实参r形参:定义方法时,规定方法要接受参数的形式r实参:调用方法时,具体传入到方法里面进行处理的数值参数传递和返回值r
5、1、声明了一个变量maxVal,分别赋值为5和6 形参变量开始并不存在参数传递和返回值r2、开始调用方法,产生a、b两个临时变量 把5和6两个参数传递给这两个变量 参数传递和返回值r3、返回值被赋予maxVal变量 局部变量a、b被释放掉,方法结束类变量r在类中除了能够包含方法以外,还能够直接包含变量 语法:数据类型 变量名;r这些变量的作用域是整个类范围。即该类所有的方法都能够直接使用课堂练习求圆柱体的体积课堂示例import;class Teststatic final float PI=3.14f;public static float getArea(float r)float s=P
6、I*r*r;return s;public static float getVolume(float r,float h)float s=getArea(r);float v=s*h;return v;课堂示例 public static void main(String args)Scanner scan=new Scanner(System.in);(输入圆的半径:);float r=scan.nextFloat();(“输入圆柱的高:);float h=scan.nextFloat();_(“得到的圆柱的体积是:+v);课堂练习求s=s1+s2+s3+s20的值,其中:sn=1+1/2+
7、1/3+1/n为什么需要包r生活案例 文档分门别类,易于查找文档分门别类,易于查找 不同内容的文档可以放在不同的不同内容的文档可以放在不同的 袋子中,拥有相同的名字,避免冲突袋子中,拥有相同的名字,避免冲突 易于管理易于管理 为什么需要包r树形文件系统r使用目录解决文件同名冲突问题r如何存放两个同名的类而不冲突?包r包解决类的同名问题允许类组成较小的单元(类似允许类组成较小的单元(类似文件夹),易于找到和使用相文件夹),易于找到和使用相应的文件应的文件 防止命名冲突防止命名冲突 更好的保护类、数更好的保护类、数据和方法据和方法 A.java包包如何创建包package ;public clas
8、s School public String toString()包名包名 使用使用package声明包,声明包,以分号结尾以分号结尾如果有包的声明,一定如果有包的声明,一定作为作为Java源代码的第一条源代码的第一条语句语句 包命名规范r包名由小写字母组成,不能以圆点开头或结尾r自己设定的包名之前最好加上唯一的前缀,通常使用组织倒置的网络域名。如:域名 r自己设定的包名部分依不同机构各自内部的规范不同而不同package mypackage;package net.javagroup.mypackage;package net.javagroup.research.powerproject;
9、部门名部门名 项目名项目名 package.mypackage;用Eclipse 创建包r使用Eclipse创建包的两种方法:r分别创建包和类:r创建项目创建包创建类r创建类的过程中创建类所在的包r创建项目创建类(在此过程中声明所属包,如无声明,则显示“缺省包”)如何导入包r为了使用不在同一包中的类,需要在Java程序中使用import关键字导入这个类import java.util.*;/导入导入java.util包中所有类包中所有类import java.lang.*;/导入导入java.lang包中所有类包中所有类 关键字关键字import并不陌生并不陌生 import 包名包名.类名;
10、类名;1、系统包、系统包(eg:java.lang)2、自定义包:、自定义包:net.javagroup *:指包中的所有类指包中的所有类Hello:指包中的:指包中的Hello类类 JavaDoc注释r回顾学过的注释方式r单行注释:/这里是注释r多行注释:/*这里是注释1 这里是注释2*/rJavaDoc注释:使用“/*”开始和“*/”结束,用来注释类,方法等/*CalcScore类类 *author Chris*version 1.0 2007/06/21*/描述信息描述信息 author:描述作者信息:描述作者信息 version:描述版本信息:描述版本信息 方法的JavaDoc注释 给
11、ScoreCalc类的方法添加JavaDoc注释 /*计算总成绩计算总成绩 *return total 总分总分 */public int calcTotalScore()int total=java+c+db;return total;return:描述方法的返回值:描述方法的返回值 描述信息描述信息 优点优点:使用:使用/*和和*/以及固定的以及固定的JavaDoc标记(以标记(以开头),开头),便于生成便于生成 Java文档文档 定义类的方法的步骤是什么?定义类的方法的步骤是什么?类中的一个方法如何调用类的另一个方法?类中的一个方法如何调用类的另一个方法?类中的一个方法如何调用另一个类的方法?类中的一个方法如何调用另一个类的方法?如何声明包?如何导入包?如何声明包?如何导入包?如何给类的方法添加如何给类的方法添加JavaDoc注释?注释?总 结作 业r用方法实现求1!+2!+3!+20!r用方法实现求1000以内的所有素数 r利用递归调用实现:猴子吃桃问题,猴子第一天摘下若干个桃子,当即吃了一半,还不瘾,又多吃了一个。第二天早上又将剩下的桃子吃掉一半,又多吃了一个。以后每天早上都吃了前一天剩下的一半零一个。到第10天早上想再吃时,见只剩下一个桃子了。求第n天有多少桃子
限制150内