(52)方法声明
最后更新于:2022-04-01 10:59:17
## Java编程那些事儿52—方法声明
郑州游戏学院 陈跃峰
出自:[http://blog.csdn.net/mailbomb](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语句时需要特别注意的问题。