版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、第4章类的方法成员第第4章类的方法成员章类的方法成员4.1 方法的设计方法的设计4.2 方法中的分支语句方法中的分支语句4.3 方法中的循环语句和跳转语句方法中的循环语句和跳转语句4.4 使用使用Javadoc工具制作帮助文档工具制作帮助文档4.5 Java程序的编写规则程序的编写规则第4章类的方法成员第第4章章 类的方法成员类的方法成员学习目标学习目标 掌握成员方法的声明; 学会使用重载技术设计程序; 理解Java语言中方法调用时参数的传递过程; 掌握Java语言中分支程序的设计; 掌握Java语言中循环程序的设计; 理解跳转语句continue和break的功能; 了解使用Javadoc工
2、具制作帮助文档的方法; 理解Java程序的编写规范。第4章类的方法成员一个类由数据成员和方法成员组成。方法成员对类中的数据成员进行一些操作,它由一段程序代码组成。类中定义的方法与C语言中的函数类似,但在Java语言中不允许有单独的函数存在,函数只能定义在类中。所以,在面向对象程序设计中,一般将由一个名称标识、具有一定功能的程序段叫方法,而不叫函数。一个方法由完成一定功能的语句组成。本章将介绍方法的设计技术和方法的主要组成语句。 第4章类的方法成员基本技能基本技能4.1 方方法法的的设设计计一个方法在类中进行定义之后,如果实例化了该类的一个对象,那么该对象就可以执行方法中定义的操作。下面介绍方法
3、声明与方法调用的有关知识。第4章类的方法成员4.1.1 方法的声明与调用方法的声明与调用1. 方法的声明方法的声明在一个类中,方法的声明格式如下:修饰符 返回值类型 方法名(参数列表)方法体第4章类的方法成员方法修饰符主要有public、private、protected、static、final和abstract等。 它们的含义简要说明如下: public:用它修饰的方法,在任何包中的任何程序中都能被访问。 private:用它修饰的方法,只能在定义该方法的类中被访问。第4章类的方法成员 protected:用它修饰的方法,可以被所在包中的类或者在任何包中该类的子类访问。 static:用它
4、修饰的方法称为类方法或静态方法,可以通过类名直接调用。 final:用它修饰的方法不能在子类中进行修改。所以称使用它定义的方法为最终方法。 abstract:可以用它定义抽象方法,抽象方法必须在具体的子类中实现。第4章类的方法成员方法可以返回一个值,返回值的类型要在方法名前面明确指出。方法可以返回简单类型(如返回int型)数据,也可以返回类类型(如返回String型)数据。若方法不返回值,则返回值类型要写关键字void,并且不能省略,并且不能省略。因此,除了构造方法外构造方法外,所有的方法都要求有返回值类型。第4章类的方法成员方法可以有参数列表,也可以无参数列表。参数的类型可以为任意类型,多个
5、参数之间要使用“,”分隔。如果方法首部的返回值类型不是void,则在方法体中就要有关键字return。其格式如下: return 表达式;int max(int a, int b)return ab?a:b; 第4章类的方法成员要注意要注意,表达式一定要保证方法能返回相应数据类型的值。但对于有些程序,即使有正确的return语句,也不能保证程序的正确。例如:第4章类的方法成员public class TestReturn public static void main(String args) System.out.println(test(3); static int test(int a)
6、 if(a0) return a; /*else return -a;*/ 该程序编译时,将发生“缺少return语句”的错误,因为方法test不能保证在任何情况下都有返回值(如果去掉注释,则可以编译成功)。第4章类的方法成员另外,当把return语句放在一个循环语句的循环体中时,也可能出现编译错误(案例4-2中将演示该错误),因为编译时会认为这个循环体有可能不被执行(除非写成do循环或者无限循环的形式)。注意:返回值类型为void的方法也可以使用return语句,这时return语句的功能是终止方法的执行并返回到该方法的调用者。这时,return语句后不能出现表达式(即为空的return语句
7、)。第4章类的方法成员2. 方法的调用方法的调用根据方法是否有返回值,可分为两种调用格式:(1) 方法有返回值时的调用。如果方法返回一个值,则通常以表达式的方式调用。例如,java.lang包中的数学函数类Math中,定义了求两个数中最大值的max方法,则通常按类似于下列的格式调用:int larger = Math.max(3, 4) * 3;System.out.println(Math.max(3, 4);第4章类的方法成员(2) 方法无返回值时的调用。如果方法返回类型为void,即无返回值,则这时对方法以语句的形式调用。如System类中终止程序执行的方法exit,只能按类似于下列的格
8、式调用: System.exit(1);第4章类的方法成员4.1.2 【案例【案例4-1】 累加器累加器1. 案例描述案例描述编写一个类,以完成累加器的功能。要求可以对存放在整型数组或实型数组中的一批数进行累加运算。2. 案例效果案例效果案例程序的执行效果如图4-1所示。图中第3行为整型数组中元素的值及其累加和,第4行为实型数组中元素的值及其累加和。 第4章类的方法成员图4-1 案例4-1的执行效果第4章类的方法成员3. 技术分析技术分析该程序比较简单,技术分析略。4. 程序解析程序解析下面是案例4-1的程序代码。01 /*02 /案例:4-1 程序名:TestAdder.java03 /功能
9、:累加器程序,可以求整型数组或实型数组元素的累加和 第4章类的方法成员04 /*05 06 class Adder07 08 private Adder( )09 10 public static float sum(float f)11 float temp = 0.0f;12 for(int i = 0; i f.length; i+)13 temp = temp + fi;14 第4章类的方法成员15 return temp;16 17 18 public static int sum(int k)19 int temp = 0;20 for(int i = 0; i k.length;
10、 i+)21 temp = temp + ki;22 23 return temp;24 25 第4章类的方法成员26 27 class TestAdder28 public static void main(String args)29 /Adder a = new Adder(); /编译错误,不能访问private修饰的方法/下面是测试整型数组求和的程序段32 int x = 2,34,12,45,23,41,1;33 for(int i = 0; i x.length; i+)34 if(i = = x.length - 1) 35 System.out.print(xx.length
11、-1 + = );36 else37 System.out.print(xi + +);38 第4章类的方法成员39 System.out.println(Adder.sum(x);40 41 /下面是测试实型数组求和的程序段42 float y = 2.34f,23.34f,12.45f,234.45f,10f;43 for(int i = 0; i y.length; i+) if(i= =y.length - 1) 45 System.out.print(yy.length-1 + = );46 else47 System.out.print(yi + +);48 49 System.o
12、ut.println(Adder.sum(y);50 51 第4章类的方法成员 一般成员方法的重载与构造方法的重载类似,都是指两个方法具有相同的名称和不同的形式参数两个方法具有相同的名称和不同的形式参数。方法名与形式参数一般合称为方法头标志。调用方法时,Java系统能够根据方法头标志决定调用哪个方法。 方法重载的优点是执行相似任务的方法可以使用相同的名称,可使程序清晰、易读。第4章类的方法成员注意:重载的方法,其方法名必须相同,参数必须不注意:重载的方法,其方法名必须相同,参数必须不同同(指参数的类型、个数或顺序不同指参数的类型、个数或顺序不同),不能通过返回值类型不能通过返回值类型和方法的修
13、饰符来区别重载的方法。和方法的修饰符来区别重载的方法。如下面的三个方法不能进行重载(因为这三个方法的参数都是int型):public void m1(int a) public int m1(int b) int m1(int c) 第4章类的方法成员下面的两个方法可以进行重载:public void m1(int a, float b) public void m1(float b, int a) 第4章类的方法成员4.1.3 【相关知识】【相关知识】 参数传递参数传递方法定义中的参数叫形式参数,简称为形参;在方法调用时给出的参数叫实在参数,简称为实参。Java语言中,调用一个方法时将实参值
14、拷贝给对应的形参。下面举例说明参数的传递情况。第4章类的方法成员1. 参数为简单类型时的传递情况class TestParamstatic void change(int a)a=12;public static void main(String args)int a=1;change(a);System.out.println(a=+a);程序运行后,输出的a是多少?第4章类的方法成员图4-2 参数为简单类型时的传递过程第4章类的方法成员2. 参数为对象类型时的传递情况参数为对象类型时的传递情况import java.util.*;class TestParam1static void ch
15、ange(int b)Arrays.fill(b,10);public static void main(String args)int a=1,2,3,4,5,6;change(a);for(int i=0;i= 0) & (i = 0) area = radius*radius*PI; System.out.println(圆的面积是: + area);else System.out.println(半径不能为负数);注意:注意:当花括号中只有一条语句时,花括号可以省略。但为了程序逻辑结构的清晰,尽量不要省略花括号。第4章类的方法成员3. 嵌套的if语句if或if-else中要执行
16、的语句可以是任意合法的Java语句,当然也包括其他if或if-else语句。如果一条if语句中还包含其他的if语句(或if-else语句),或一条if-else语句中还包含其他的if语句(或if-else语句),则构成if语句的嵌套。例如:if (i k) if (j k)System.out.println(k是i和j三个数比较小的一个);else System.out.println(i等于或者小于k);第4章类的方法成员注意:注意:一般在程序设计语言中规定,else语句将与最近的if语句相匹配。请读者思考,如果将上例程序中的去掉,结果正确吗?如当i =3、j=1、k=2时,最后输出els
17、e分支内语句,这是错误的结果。第4章类的方法成员当有多重if语句嵌套在else语句中时,常使用如下的书写风格:if (布尔表达式1) 语句1else if (布尔表达式2) 语句2else if (布尔表达式3) 语句3else if (布尔表达式n) 语句nelse语句n+1; 这个风格可以避免深层缩进,使程序容易阅读。 第4章类的方法成员4. 多路分支语句switchswitch语句的一般形式如下:switch(表达式)case 常量1:语句块1; /分支1case 常量2:语句块2; /分支2case 常量n:语句块n; /分支ndefault: 语句块n+1; /分支n+1第4章类的方
18、法成员在使用switch语句时要注意以下问题: switch后表达式的值必须是byte、char、short或int类型的,不能使用浮点类型或long类型,也不能为一个字符串,并且必须写在一对括号内。 case子句中常量的类型必须与表达式的类型相容,而且每个case子句中常量的值必须是不同的。 default子句是可选的,当表达式的值与任一个case子句中的值都不匹配时,就执行default后的语句。 如果没有使用break语句作为某一个case代码段的结束句,则程序的执行将继续到下一个case,而不检查case表达式的值。 第4章类的方法成员class TestSwitchpublic st
19、atic void main(String args)int i=Integer.parseInt(args0);switch(i)case 1: System.out.println(1);break;case 2: System.out.println(2);break;default: System.out.println(else);第4章类的方法成员4.2.2 【案例【案例4-2】 计算偿还金计算偿还金1. 案例描述案例描述设计程序,根据年贷款利率、贷款年限和贷款额,计算偿还金额。本题中,假设只有三种贷款方式,即3年期、5年期和10年期,其利率分别是:3年期为7%,5年期为8%,10
20、年期为10%。2. 案例效果案例效果案例的执行结果如图4-4所示。 第4章类的方法成员图4-4 案例4-2的执行结果第4章类的方法成员3. 技术分析技术分析该程序要使用if语句,根据不同的贷款年限来计算利息。4. 程序解析程序解析案例程序如下:01 /*02 /案例:4-2 程序名:TestCash.java03 /功能:计算偿还金 04 /*05 06 class Cash第4章类的方法成员07 /lendAmount为贷款数量08 private float lendAmount;09 /lendYear为贷款年限10 private int lendYear;11 /下面3个常量为年利率
21、13 private final float THREE_YEAR_INTEREST_RATE = 0.07F;14 private final float FIVE_YEAR_INTEREST_RATE = 0.08F;15 private final float TEN_YEAR_INTEREST_RATE = 0.10F;16 第4章类的方法成员17 /有参数的构造方法18 public Cash(float lendAmount, int lendYear)19 this.lendAmount = lendAmount;20 this.lendYear = lendYear;21 22
22、 23 /计算偿还金24 private float compensateAmount()25 if(lendYear = 3)第4章类的方法成员26 return lendAmount*lendYear*THREE_YEAR_INTEREST_RATE + lendAmount;27 else if(lendYear = 5)28 return lendAmount*lendYear*FIVE_YEAR_INTEREST_RATE + lendAmount;29 else if(lendYear = 10)30 return lendAmount*lendYear*FIVE_YEAR_INT
23、EREST_RATE + lendAmount;第4章类的方法成员31 else 32 System.out.println(贷款年限只能是3年、5年或10年!);33 System.exit(-1);34 return 0.0f;35 36 37 38 /显示贷款信息和偿还金39 public void showCompensateAmount()第4章类的方法成员40 System.out.println(共贷款 + lendAmount + 元, + lendYear + 年后的偿还金为 + compensateAmount() + 元);41 42 43 44 class TestCa
24、sh45 public static void main(String args)46 Cash c1 = new Cash(2000.0f, 3);47 c1.showCompensateAmount();第4章类的方法成员48 49 Cash c2 = new Cash(10000.0f, 5);50 c2.showCompensateAmount();51 52 Cash c3 = new Cash(10000.0f, 10);53 c3.showCompensateAmount();54 55 第4章类的方法成员该程序的13行、14行和15行定义了3个存放年利率的常量。注意,常量标识符
25、一般用大写字母表示。注意,第34行在程序中其实是多余的,但将其去掉,程序将不能正确编译。 第4章类的方法成员4.2.3 【相关知识】【相关知识】 在方法中使用常量在方法中使用常量在第3章介绍过,在类中final修饰的数据成员是常量成员,其值不能在程序中进行修改。在方法中,也可以用final说明局部常量,但与类中final说明的常量成员有一点不同。 第4章类的方法成员看下面的实例:01 class TestFinal02 static final int b = 5;03 public static void main(String args)04 final int a;05 a = 45;0
26、6 /Temp.b = 34;07 /a = 50;08 09 第02行如给成员常量b不赋初值,则程序编译有错误,但第04行在方法中说明的局部常量a,可以在以后赋值,但只能赋一次值。所以,程序的第06行和第07行均有错误。第4章类的方法成员4.3 方法中的循环语句和跳转语句方法中的循环语句和跳转语句Java语言与C语言类似,也有3种循环语句,即for、do-while和while循环。Java程序中的跳转语句经常使用在循环中。第4章类的方法成员4.3.1 循环语句和跳转语句循环语句和跳转语句循环结构的程序是在一定条件下,反复执行某段程序的流程结构,被反复执行的程序称为循环体。1. while语
27、句语句while语句的语法格式如下:while(布尔表达式)循环体第4章类的方法成员while语句的循环条件是一个布尔表达式,它必须放在括号中。在循环体执行前,先计算布尔表达式,若结果为true,则执行循环体; 若结果为false,则终止循环体的执行,程序转移到while循环后的语句执行。2. do-while语句语句do-while语句的语法格式如下:do 循环体while(布尔表达式)do-while循环先执行循环体,再计算循环条件,若计算结果为true,则执行循环体;若为false,则终止do循环的执行。第4章类的方法成员while循环和do-while循环的比较:(1) while循环
28、先计算布尔表达式的值,再根据计算结果确定是否执行循环体,因此循环体有可能一次也不执行。(2) do循环先执行循环体,然后再计算布尔表达式的值,因此循环体要至少被执行一次。因此,若循环体中的语句至少需要执行一次,建议使用do循环,否则可以使用while语句。第4章类的方法成员3. for语句语句for语句的语法格式如下:for(循环变量初始化; 循环条件; 循环变量调整语句)循环体 循环条件用于控制循环体的执行次数,其结果应该为一个布尔值。循环体在花括号中,当然只有一条循环体语句时,可以不要花括号。为了使程序结构清晰,建议在任何情况下都写上花括号。第4章类的方法成员注意:for循环一般使用在循环
29、次数事先确定的情况下,而while和do-while循环一般用在循环次数事先不确定的情况下。for循环、while循环和do-while循环它们都可以嵌套。嵌套循环由一个外层循环和一个或多个内层循环组成。每当外层循环重复时,就重新进入内部循环,重新计算它的循环控制参数。第4章类的方法成员4. 跳转语句跳转语句跳转语句用来实现程序执行过程中流程的转移。Java的跳转语句有三个:continue、break和return。其中return语句用于从被调用的方法中返回到调用方法中。下面主要介绍break和continue语句。1) continue语句continue语句用于循环结构中,表示终止当前
30、这轮循环体的执行,直接进入下一轮循环。continue语句通常有两种使用情况:(1) 不带标号的continue语句:用来结束本次循环,即跳过循环体中continue语句后面的语句,回到循环体的条件测试部分继续执行。 第4章类的方法成员 /测试不带标号的continue语句 public class TestCont1 public static void main(String args)int index = 0;while(index = 99)index+=10;if(index % 20 = 0) continue;System.out.println(The index is +
31、index);第4章类的方法成员图4-5 TestCout1.java程序的执行结果第4章类的方法成员(2) 带标号的continue语句:用来跳过标号所指语句块中所剩的语句,回到标号所指语句块的条件测试部分继续执行(具体应用见本节案例程序)。Java语言中,标号常用于标识一个语句块或一个循环,标号用有效的标识符表示。一般将标号放在语句块的开头或某一循环的开头。 第4章类的方法成员outer: for(int i = 1; i n; i+) for(int j = 2;j i; j+) if(i%j = 0) continue outer; System.out.print(i + t); 第
32、4章类的方法成员2) break语句break语句用于从一个语句块中跳转出来,进入该语句块后面的语句继续执行程序。break语句通常在switch语句和循环语句中使用。break语句也有两种用法:(1) 无标号的break语句:用于跳出switch语句或当前循环,但与continue语句不同的是,continue语句将使循环进入下一次,而break语句将结束循环的执行。第4章类的方法成员(2) 带标号的break语句:用于结束标号标注语句块的执行。break语句的标号应标注在一个语句块的开头。请分析下面程序的执行过程: L1:a = 45;L2:System.out.println(a= +
33、2);if(a = 45)break L1;System.out.println(a= + 12); System.out.println(a= + 3); 第4章类的方法成员4.3.2 【案例【案例4-3】 求素数求素数1. 案例描述案例描述给定一个大于1的正整数,求从1到该数之间的所有素数。2. 案例效果案例效果案例程序的执行效果如图4-6所示。第4章类的方法成员图4-6 案例4-3的执行结果第4章类的方法成员3. 技术分析技术分析可以根据素数的定义判断一个数是不是素数。如要判断7是不是素数,可以用7分别除以2到6之间的所有整数,如果都不能整除,则说明7就是素数。求素数的算法描述如下:fo
34、r(i从1循环到正整数n) for(j从2循环到i-1) 判断i能否被j整除;如果能整除就转到外循环,取下一个i执行程序 输出i (如果i不能被2到i-1之间的数据所整除,则说明i是素数);第4章类的方法成员 class Prime private int n; Prime(int n) this.n = n; public void outputPrime() System.out.println(1到 + n + 之间的所有素数如下:”); int lineControl = 0; outer: for(int i = 1; i n; i+) for(int j = 2;j i; j+)
35、if(i%j = 0) continue outer; if(lineControl%10=0) System.out.print(“n”); System.out.print(i + t); lineControl+; /当i不能被2到i-1之间的所有数整除时,输出素数i。第4章类的方法成员 class TestPrimepublic static void main(String args)Prime p1 = new Prime(Integer.parseInt(args0);p1.outputPrime(); 第4章类的方法成员4.3.3 【相关知识】【相关知识】 foreach循环循
36、环在JDK6.5中新增了一个循环语句foreach,它可以用来简化某些循环语句的书写。如有下面的数组定义:float a = 23.23f, 34.9f, 45.88f, 45.556f, 23.987f, 23.0f, 34.45f;要输出所有数组元素值,可以使用下面的循环语句:for(int i = 0; i a.length; i+ ) System.out.println(ai);第4章类的方法成员对上面的程序段,在Java语言中还可以用下面的简单方式写出:for(float k : a) System.out.println(k); 这里的k会按序自动取得数组a中的每个下标元素。Ja
37、va语言中将这种格式的for语句叫做foreach循环,但要注意,只能在JDK5.0以上的版本中使用。 第4章类的方法成员技能拓展技能拓展4.4 使用使用Javadoc工具制作帮助文档工具制作帮助文档Javadoc是一个用于从Java源代码的注释中自动提取有关信息以生成HTML帮助文档的工具。用Javadoc生成的帮助文档与JDK帮助文档的格式类似。Javadoc作为Java软件开发包(SDK)的一个标准部分,与编译器Javac.exe和解释器Java.exe工具一样,位于安装目录下的bin文件夹中。Javadoc.exe可执行文件为开发人员快速制作程序的帮助文档提供了一种非常有效的手段。下面
38、举例说明Javadoc制作帮助文档的方法。第4章类的方法成员4.4.1 文档注释中使用的标记文档注释中使用的标记1. 文档注释文档注释在第1章介绍过,Java的注释有3种方式,其中文档注释专门用于生成HTML格式的帮助文档。文档注释用“/*/”表示,即注释内容要写入“/*”和“*/”之间。文档注释的内容应该放在类、属性、构造方法、成员方法的前面,以解释和说明这些程序结构。文档注释“/*/”可以跨行使用,但要求每一行要以“*”号开始。 第4章类的方法成员在注释的内容中,还允许使用HTML语言中的标记。例如,下面的注释中使用了HTML的标记:/*This is a example document
39、 comment.*/由于文档注释中内容的第一句话会被Javadoc工具自动放在所生成HTML文件的开头,并将其作为对注释内容的一个总结,因此,该总结以*字符后的内容为起点,并结束于第一个句号之前。第4章类的方法成员2. 文档注释中使用的标记文档注释中使用的标记要使Javadoc工具正确理解用户注释的含义,可以在文档注释中使用一些Javadoc规定的标记。这些标记位于文档注释内,要求每个标记要另起一行,以一个“*”字符开始。表4-1是Javadoc工具常用的几个标记。 第4章类的方法成员表表4-1 几个常用的几个常用的Javadoc标记标记标记名称 含 义 author 用于类或接口前,指定软
40、件作者 version 指定软件版本 param 将某个方法使用的参数罗列出来 return 将某个方法的返回值列出来 see 链接至一个含有更详细信息的描述文档中,see后跟链接点 第4章类的方法成员4.4.2 Javadoc应用实例应用实例下面是一个使用Javadoc文档生成器的实例:01 /*02 * This is a example document comment.03 * author Ren taiming04 * version v1.005 */06 07 public class ExampleDocComment08 第4章类的方法成员09 /*10 *xx是一个公有成
41、员属性11 */12 public int xx = 0;13 14 15 /*16 *ExampleDocComment是一个无参数的构造方法17 */ 第4章类的方法成员18 public ExampleDocComment()19 20 21 /*22 *setXx方法用来给属性xx提供数值23 *param xx参数xx是一个整型数值24 */25 public void setXx(int xx)26 this.xx = xx;27 第4章类的方法成员28 29 /*30 *getXx方法取得公有成员xx的数据31 *return xx 返回整型数据32 */33 public in
42、t getXx()34 return xx;35 36 第4章类的方法成员使用下列Javadoc命令生成帮助文档:javadoc -version -author ExampleDocComment.java执行该命令后,在源程序文件所在目录中生成十几个HTML格式的帮助文档,点击其中的index.html文件,则显示类似于图4-7所示的帮助文档窗口。该窗口与JDK帮助系统的风格是一致的,使用起来很方便。第4章类的方法成员图4-7 Javadoc工具生成的帮助文档窗口第4章类的方法成员注意,该程序所有的帮助都使用了文档注释的格式(/* */)。第02行的 example 将使example加粗
43、显示;第03行的author Ren taiming将在帮助文档中加上作者信息;第04行的version将帮助文档中加上版本信息,如图4-7所示。每个成员变量前和每个方法前的文档注释将会被Javadoc工具自动生成的帮助所使用。程序的第23行还使用了参数标记param,在第31行使用了返回值标记return,这样生成的帮助文档将对参数和返回值进行说明,如图4-8所示。 第4章类的方法成员图4-8 帮助文档中方法的详细说明第4章类的方法成员Javadoc也可使用下面的简单格式: javadoc ExampleDocComment.java这时生成的帮助将忽略作者和版本信息。另外,Javadoc还
44、提供了很多有用的标记,具体情况可查看Javadoc的帮助。 第4章类的方法成员工程规范工程规范4.5 Java程序的编写规则程序的编写规则一个软件开发团队中,每个人一般只负责所开发系统中的某个部分,在软件编码的最后阶段,要将这些部分集成起来,构建成一个最终的软件产品。因此,为了便于软件开发成员之间互相协作、交流和软件的集成,一个软件开发团队一般都会制定一些编码标准或软件开发规则,这些规则一般依据国家标准、行业标准或软件开发工具的特点等制定。本节介绍一些使用Java语言开发软件时常用的软件编写规则。 第4章类的方法成员4.5.1 类的设计规则类的设计规则下面是几点基本的类设计规则: 使用统一、一
45、致的编码风格。 每个类的前面要有对该类的注释; 在包含main的类中,不要再设计其他的方法,即将main方法放在一个单独的类中; 要使用同一个包中的多个类时,尽量在import语句中使用“*”来代替多个类名; 一般不要使用public修饰成员变量; 程序中其值不变的量,尽量使用final修饰符来声明; 第4章类的方法成员 对于类中定义的成员变量,用构造方法进行初始化; 类中的成员属性,使用setXXX和getXXX设置或获取其值; 一个类的不同方法之间、不同性质的属性之间、属性与方法之间一般要空一行或两行; 一个方法或属性的注释放在紧接其代码的前面; 尽可能细致地加上注释,并用Javadoc注
46、释文档语法生成自己的程序文档; 使类尽可能短小精悍,而且只解决一个特定的问题; 一个类要提供尽可能少的公用方法; 源程序中,每行的字符要保持在80个以内。 第4章类的方法成员4.5.2 方法的设计规则方法的设计规则方法的主要设计规则是: 方法中尽量不要使用continue语句; break语句一般只使用在switch语句中; 每个方法体应该都有return语句,返回值为void的方法,return语句后不能有返回值,并且要将return语句放在方法的最后一行;第4章类的方法成员 尽量不要使用if语句的多层嵌套,例如;if(a 0) if(b 0) x = a*b;可将if语句写为“if(a0)
47、 & (b0)”格式。 将对外提供服务的方法用public修饰,支持类中功能的方法用private修饰。另外,关于标识符的命令规则和程序的书写规则已经在前面的“工程规范”中介绍过。读者在编写程序时应尽量养成好的设计习惯,即遵守一般的编程规则。第4章类的方法成员基础练习基础练习【简答题】【简答题】4.1 什么是方法? 如何声明方法?4.2 方法的调用有哪两种格式?4.3 什么是方法重载?举例说明。4.4 final修饰符用在成员变量前和用在一个方法的局部变量前有没有区别?4.5 举例说明当参数是对象类型时的传递过程。第4章类的方法成员4.6 分支语句有哪几种类型?它们的格式如何?4.7
48、对于两个实数要进行的“= =”比较,将如何处理?4.8 举例说明有些程序使用switch语句可以简化程序的编写。4.9 说明for、while和do-while循环的格式,并对其进行比较。4.10 举例说明foreach循环的使用方法。4.11 说明使用Javadoc制作帮助文档的优点。4.12 根据你的理解,说明你编写Java程序时要遵守的规则。第4章类的方法成员技能训练技能训练注意:所有程序均要求按Java语言的编程规范完成。【技能训练【技能训练4-1】 方法设计技能练习方法设计技能练习设计一个类,该类中有两个静态方法(static),方法名都为min,该方法可以求出两个float型或两个
49、int型数中比较大的一个。(提示:使用方法的重载来实现。)第4章类的方法成员class TestCzpublic static int max(int x,int y)return xy?x:y;public static float max(float x,float y)return Math.max(x,y);public static void main(String args)System.out.println(TestCz.max(10,20);System.out.println(TestCz.max(13.2f,12.3f);第4章类的方法成员【技能训练【技能训练4-2】 方
50、法参数传递程序练习方法参数传递程序练习设计一个类,可以对一个int型数组中的元素按升序进行排序;并设计一个测试类,从命令行中输入5个整数进行测试。(提示:从命令行输入的字符串可以使用Integer.parseInt()方法转化为整数。)第4章类的方法成员 冒泡法排序冒泡法排序输入输入a0aN-1 for (i=1;i=n-1; i+) for (j=1; jaj+1 T F aj与与aj+1交换交换输出输出a0aN-1n个数要比较n-1趟,而在第i趟比较中,要进行n-i次两两比较。第4章类的方法成员class SortIntpublic static void sort(int a)/冒泡排序
51、,升序 int temp=0; for(int i = 0; ia.length-1; i+) for(int j = 0;jaj+1) temp = aj; aj=aj+1; aj+1=temp; 第4章类的方法成员class TestSortpublic static void main(String args)int a=new int5;for(int i=0;i5;i+) ai=Integer.parseInt(argsi); System.out.println(“排列前); for(int i=0;i5;i+) System.out.println(a+i+=+ai); Sort
52、Int.sort(a); System.out.println(升序排列后); for(int i=0;i5;i+) System.out.println(a+i+=+ai); 第4章类的方法成员【技能训练【技能训练4-3】 分支程序练习分支程序练习将案例4-2的程序改为使用switch语句来实现。第4章类的方法成员class Cash private float lendAmount; private int lendYear; private final float THREE_YEAR_INTEREST_RATE = 0.07F; private final float FIVE_YEA
53、R_INTEREST_RATE = 0.08F; private final float TEN_YEAR_INTEREST_RATE = 0.10F; public Cash(float lendAmount, int lendYear) this.lendAmount = lendAmount; this.lendYear = lendYear; private float compensateAmount()/计算偿还金 switch(lendYear) case 3: return lendAmount*lendYear*THREE_YEAR_INTEREST_RATE + lendA
54、mount; case 5: return lendAmount*lendYear*FIVE_YEAR_INTEREST_RATE + lendAmount; case 10: return lendAmount*lendYear*TEN_YEAR_INTEREST_RATE + lendAmount; default: System.out.println(贷款年限只能是3年、5年或10年!); System.exit(-1); return 0.0f; public void showCompensateAmount() System.out.println(共贷款 + lendAmoun
55、t + 元, + lendYear + 年后的偿还金为 + compensateAmount() + 元); 第4章类的方法成员class TestCash public static void main(String args) Cash c1 = new Cash(2000.0f, 3); c1.showCompensateAmount(); Cash c2 = new Cash(10000.0f, 5); c2.showCompensateAmount(); Cash c3 = new Cash(10000.0f, 10); c3.showCompensateAmount(); 第4章类的方法成员【技能训练【技能训练4-4】 分支与循环程序练习分支与循环程序练习编写一个类,该类可以输出n以内的所有完数,其中n是用户从键盘上输入的。(提示:如果一个数恰好等于它的因子之和,则这个数就是“完数”。例如6的因子是1、2、3,而6 = 1+2+3,因此6就是完数。)第4章类的方法成员class Wsprivate int n;Ws(int n)this.n=n;public void testWs()int s,j=0;int a=new int20; /保存n以内的完数f
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2024年度钢筋原材料采购合同5篇
- 人教版九年级化学第八单元复习课件
- 2024年度政府采购服装类协议3篇
- 公司员工半年工作总结
- 2024年度定龙水库水上乐园设备采购合同2篇
- 护理文件首页书写规范
- 小讲课糖尿病护理
- 灾难现场医疗救援
- 菏泽学院《国产影视鉴赏》2022-2023学年第一学期期末试卷
- 《夜视技术及其应用》课件
- 《口腔基础知识》课件
- 肝内胆管结石的护理查房课件
- 保安保密管理制度
- 烹饪技巧培训课件
- 2023信息数据保密协议Word模板
- 第18课《狼》课件(共31张)语文七年级上册
- 村口修建公墓申请书
- 2023南方国家电网招聘笔试参考题库(共500题)答案详解版
- 2023-2024学年广东省深圳市育才二中九年级(上)期中物理试卷
- 中建盘扣式落地卸料平台施工方案
- 浅议中国特色社会主义经济建设
评论
0/150
提交评论