java方法
方法
方法是把一些相关的语句组织在一起,用于解决某一特定问题的语句块。方法必须放在类定义,也就是说,方法必须是某一个类的方法。
另外,在应用程序中,某些任务常常要在一个程序中运行好多次,举个最简单的例子,对多个数组进行排序。
此时我们就可以把这些相同的代码段写成一个单独的单元,需要的时候我们就来调用它
什么是方法
现实生活中,在遇到问题时,我们会想一些方法来解决
比如:教务管理系统中,包含学生的平均成绩
在JAVA中方法,其实也是一样的
定义:方法就是完成特定功能的代码块
方法的格式
[修饰符] 返回值类型 方法名(参数类型 形式参数1,参数类型 形式参数2,….)
{
程序代码
return 返回值;
}
返回值类型 用于限定返回值的数据类型,无返回值void,
方法名 一个名称,为了方便我们调用方法
参数类型 限定调用方法时传入参数的数据类型
参数名 是一个变量,接收调用方法时传入的参数
方法体 完成功能的代码
return 结束方法以及返回方法指定类型的值
返回值 程序被return带回的结果,返回给调用者
语法
返回值类型 方法名(参数类型 形式参数1,参数类型 形式参数2,….)
{
程序代码
return 返回值;
}
方法调用的过程分析
方法的调用
方法调用的一般形式为: 方法名([参数列表])
注意事项
参数的个数、类型和顺序,应该与被调用方法所要求的参数个数、类型和顺序一致,才能正确地进行数据传递。
无参方法直接调用方法名。
有参方法比无参方法多了一个参数表。调用有参方法时,调用方法将赋予这些参数实际的值。
为了与调用方法提供的实际参数区别开,将方法定义中的参数表称为形式参数表,简称形参表。
方法的参数传递
Java的实参值如何传入方法呢?
Java里方法的参数传递方式只有一种:值传递。 即将实际参数值的副本(复制品)传入方法内,而参数本身不受影响。
1.形参:方法声明时,方法小括号内的参数
实参:调用方法时,实际传入的参数的值
2.规则:java中的参数传递机制
1)形参是基本数据类型:将实参的值传递给形参的基本数据类型的变量
2)形参是引用数据类型:将实参的引用类型变量的值(对应的堆空间的对象实体的首地址值)传递给形参的引用类型变量。
方法的返回值和返回类型
返回值与return语句
有参函数的返回值,是通过函数中的return语句来获得的。
return语句的一般格式: return 返回值表达式 ;
return语句的功能:返回调用函数,并将“返回值表达式”的值带给调用函数。
注意:调用函数中无return语句,可以用“void”定义成“无(空)类型”。
函数类型
在定义函数时,对函数类型的说明,应与return语句中、返回值表达式的类型一致。
作用域
局部作用域
在java中,局部变量被定义在某个区块中。也就是说,某区块中定义的变量,只能供这个区块使用,区块以外使用则报错。
在方法主体中声明的变量只具有那个方法的作用域;一旦方法结束,它们也会消失,而且只能由那个方法内部执行的代码来访问。这些变量称为局部变量(local variable),因为它们局限于声明它们的那个方法,不能在其他任何方法的作用域中使用。换言之,你不能使用局部变量在不同的方法之间共享信息。
类作用域
在类定义体中(但不在某个方法中)声明的任何变量都具有那个类的作用域。在java语言中,使用成员变量一词来描述由一个类定义的变量。和局部变量不同,可以使用成员变量在不同的方法之间共享信息。
案例
例如:
static int f1(int a) /*函数f1*/
{ int b,c;
……
} /*a,b,c作用域:仅限于函数f1()中*/
static int f2(int x) /*函数f2*/
{ int y,z;
……
} /*x,y,z作用域:仅限于函数f2()中*/
static void main(string[] args)
{ int m,n;
……
} /*m,n作用域:仅限于函数main()中*/
方法的可变参数
在Java中提供了变长参数,允许在调用方法时传入不定长度的参数。本质上是基于数组。
定义方法:…args
void fun(String… args)
注意事项
可变参数只能作为函数的最后一个参数
由于可变参数必须是最后一个参数,所以一个函数最多只能有一个可变参数
Java的可变参数,会被编译器转型为一个数组
调用可变参数方法,可以给出零到任意多个参数,编译器会将可变参数转化为一个数组。也可以直接传递一个数组
方法重载
如果两个方法名同名,而且在同一个作用域中声明,就可以说它们重载。方法重载是声明两个以上的同名方法,以实现对不同数据类型的相同处理。
方法重载有两点要求:
重载的方法名称必须相同。
重载的方法,其形参个数或类型必须不同,否则将出现“已经定义了一个具有相同类型参数的方法成员”的编译错误。
方法的重载就是在同一个类中允许同时存在一个以上的同名方法,只要它们的参数个数或类型不同即可。 如:
public class Test{
public static void main(String [] args){
int isum;
double dsum;
isum=add(3,5);
isum=add(3,5,6);
dsum=add(3.2,6.5);
}
public static int add(int x,int y) { reutrn x+y; }
public static int add(int x,int y,int z) { return x+y+z; }
public static double add(double x,double y){ return x+y; }
}
在同一个类中,允许存在一个以上的同名方法,只要它们的参数个数或者参数类型不同即可
public class PrintStream{
public void print(int i) {……}
public void print(float f) {……}
public void print(String s) {……}
}
重载方法的名字必须相同,参数列表必须不同(参数个数或者类型)
重载方法与返回值无关,返回值类型可以相同,也可以不同
调用时虚拟机通过参数列表的不同来区分同名方法
print(3);print(1.2f);print(“hello!”);
方法重载特点
与返回值类型无关,只看方法名和参数列表
在调用时,虚拟机通过参数列表的不同来区分同名方法