牛骨文教育服务平台(让学习变的简单)

Java编程那些事儿52—方法声明

郑州游戏学院 陈跃峰

出自:http://blog.csdn.net/mailbomb

第七章 方法

方法(method),在面向过程的语言中称作函数(function),在汇编语言中称作子程序,是一个代码功能块,实现某个特定的功能。在实际的程序开发中,方法是一种基础的组织代码的方式。本部分就介绍方法相关的概念、相关语法以及实际使用时需要注意的问题。

7.1 方法概述

方法的概念来源于数学上的函数,在数学中,当数据具有一定的规律时,就是用一个函数来代码该数字的规律,例如f(n)=n则代表1、2、3、……这样的一个数列。在数学上n是参数,对于确定的n值只有一个f(n)的值和它对应。

方法是一组为了实现特定功能的代码块的集合。方法在语法上的功能主要有以下两个:

1. 结构化代码

将代码按照功能进行组织,使代码的结构比较清晰,容易阅读和修改,也就是程序的可维护性强。

2. 减少代码重复

一个固定的功能,可能会在程序中多次使用,在使用时只需要调用写好的方法,而不用重复书写对应的功能代码。

方法在书写时需要注意以下两点:

3. 逻辑严谨

方法实现的一个完整的功能,所以在书写时要考虑到各种可能的情况,并对每种情况做出恰当的处理。

4. 通用性强

方法实现的是一种功能,在实际实现时,可以根据需要,使方法具备一定的通用性,除非必要,否则不要写专用的方法。

在Java语言中,恰当的使用方法,将使程序更加优雅,便于阅读和使用。下面就来介绍方法声明的语法格式。

7.2 方法声明

方法声明写在代码中类声明的内部,方法声明的外部,伪代码如下:

                   public class Hello{

                            方法声明1

                            方法声明2

                            ……

                   }

在Java语言中,方法声明之间没有顺序。

方法声明,就是声明一种新的功能,或者说创造一种新的功能。例如以下是一个求int数据绝对值的方法声明代码:

                   public int abs(int n){

                            if(n > 0){

                                     return n;

                            }else{

                                     return –n;

                            }

                   }

这里就实现了求int值绝对值的功能,为了使该功能通用,使用一个参数n代表需要求绝对值的数值,在方法内部使用求绝对值的逻辑:正数的绝对值是自身,负数的绝对值是相反数,使用return语句将方法运算的结果返回。

具体方法声明的语法格式如下:

访问控制符 [修饰符] 返回值类型 方法名称(参数列表){

                            方法体

                   }

在实际声明一个方法时,需要依次确定以上内容。下面是具体的说明:

1、 访问控制符

访问控制符限定方法的可见范围,或者说是方法被调用的范围。方法的访问控制符有四种,按可见范围从大到小依次是:public、protected,无访问控制符,private。其中无访问控制符不书写关键字即可。具体的范围在后续有详细介绍。

2、 修饰符

修饰符是可选的,也就是在方法声明时可以不书写。

修饰符是为方法增加特定的语法功能,对于方法实现的逻辑功能无影响。方法的访问控制符有五个,依次是:

u static——静态的

u final——最终的

u abstract——抽象的

u synchronized——同步的

u native——本地的

具体修饰符的作用在后续内容中将详细介绍。

3、 返回值类型

返回值类型是指方法功能实现以后需要得到的结果类型,该类型可以是Java语言中的任意数据类型,包括基本数据类型和复合数据类型。如果方法功能实现以后不需要反馈结果,则返回值类型书写为void。

在实际书写方法时,需要首先考虑一下方法是否需要反馈结果,如果反馈结果,则结果的类型是什么?这个根据方法的需要进行确定,例如上面求绝对值的方法,int类型的绝对值还是int类型,所以把返回值类型做成int型。

在方法声明里声明返回值类型,便于方法调用时获得返回值,并对返回值进行赋值以及运算等操作。

4、 方法名称

方法名称是一个标识符,用来代表该功能块,在方法调用时,需要方法名称来确定调用的内容。

为了增强代码的可读性,一般方法名称标识符和该方法的功能一直,例如实现数组排序的方法,可以将方法名称设定为sort。

在Java编码规范中,要求方法的首字母小写,而方法名称中单词和单词间隔的第一个字母大写,例如bubbleSort。

5、 参数列表

参数列表是声明方法需要从外部传入的数据类型以及个数,例如上面求int类型绝对值的方法,每次需要从外部传入一个int类型的值,这就需要在参数列表部分进行声明,语法格式为:

数据类型 参数名称

多个参数时的格式为:

数据类型 参数名称1,数据类型 参数名称2,……

声明参数时,类型在前,名称在后,如果有多个参数时,参数和参数之间使用逗号进行分割。

参数的值在方法调用时进行指定,而在方法内部,可以把参数看作是已经初始化完成的变量,直接进行使用。

参数列表部分是方法通用性的最主要实现部分,理论上来说,参数越多,方法的通用性越强,在声明方法时,可以根据需要确定参数的个数,以及参数的类型。参数在参数列表中的排列顺序只和方法调用时有关。

6、 方法体

方法体是方法的功能实现代码。方法体部分在逻辑上实现了方法的功能,该部分都是具体的实现代码,不同的逻辑实现代码区别会比较大。

在方法体部分,如果需要返回结果的值,则可以使用return语句,其语法格式为:

return 结果的值;

或无结果返回时:

return;

如果方法的返回值类型不是void,则可以使用return返回结果的值,要求结果值的类型和方法声明时返回值类型必须一致。如果返回值类型是void时,可以使用return语句实现方法返回,而不需要返回值。当代码执行到return语句时,方法结束,所以return语句的后续书写顺序的代码,例如:

           return 0;

           int n = 0; //语法错误,永远无法执行到该语句

另外,如果返回值类型不是void时,需要保证有值返回,例如下面的方法就有语法错误:

           public int test(int a){

                    if(a < 0){

                             return 0;

                    }

           }

则该方法的声明代码中,当a的值大于等于零时,则没有返回值,这语法上称作返回值丢失,这个也是在书写return语句时需要特别注意的问题。