方法的定义和调用格式
方法的定义包括两部分:方法头和方法体。
一般格式为:
方法头{
方法体的内容
}
进一步解释方法头:
方法头由方法的类型、名称和名称之后的一对小括号以及其中的参数列表所构成。无参数方法定义的方法头中没有参数列表,即方法名称之后一对小括号中无任何内容。
例如:
int speak (){ //无参数的方法头
return 23;
}
int add (int x,int y,int z){ //有参数的方法头
return x+y+z;
}
根据程序的需要,方法返回的数据类型可以是Java中的任何一种数据类型,当一个方法是void类型时,该方法就不需要返回数据。很多方法声明中都给出方法的参数,参数是用逗号隔开的一些变量声明。
方法体
方法体就是方法声明之后的一对大括号{、}以及它们之间的内容被称为方法的方法体。方法体的内容包括局部变量的声明和Java语句,即在方法体内可以对成员变量和方法体中声明的局部变量进行操作。在方法体中声明的变量和方法的参数被称作局部变量,例如:
int getSum(int n){
int sum = 0;
for(int i = 1;i < =n;i++){
sum = sum +i;
}
return sum;
}
和类的成员变量不同的是,局部变量只在方法内有效,而且与其声明的位置有关。方法的参数在整个方法内有效,方法内的局部变量从声明它的位置之后开始有效。如果局部变量的声明是在一个符合语句中,那么该局部变量的有效范围是该复合语句;如果局部变量的声明是在一个复合语句中,那么该局部变量的有效范围是该复合语句;如果局部变量的声明是在一个循环语句中,那么该局部变量的有效范围是该循环语句。
区分成员变量和局部变量
如果局部变量的名字与成员变量的名字相同,那么成员变量被隐藏,即该成员变量在这个方法内暂时失效。例如:
class Tom{
int x = 10,y;
void f(){
int x = 5;
y = x+x;//y得到的值是10,不是20。如果方法f中没有"int x = 5;",y的值将是20;
如果方法中的局部变量的名字与成员变量的名字相同,那么方法就隐藏了成员变量,如果想在该方法中使用被隐藏的成员变量,必须使用关键字this:
class Tom{
int x = 10,y;
void f(){
int x = 5;
y = x+this.x;//y得到的值是15;
}
局部变量没有默认值
成员变量有默认值,但是局部变量没有默认值,因此在使用局部变量之前,必须保证局部变量有具体的值。