Java的方法类似于其他语言如C中的函数,比如我们第一个Java程序 输出Hello,world!中用到一个方法System.out.printfln();这里的printfln()就是一个方法,System是系统类,out是对象。
1.什么是方法?
方法是语句的集合,通常执行一个功能,几个特点:
解决一类问题的步骤有序组合
包含于类或对象中
方法在程序中被创建,在其他地方被引用。
一个方法只做一个功能。
2.方法的命名规则
修饰符 返回值类型 方法名(参数类型 参数名){
……
方法体
……return返回值;
}
需要说明的是:
1)方法名的命名规则遵循第一个字母小写+驼峰原则,如schoolMan,goodNum
2)有些方法是做执行操作,没有返回值,因此返回值类型用void来表示
示例:
上述的这个例子,就是计算两个数的最大值的方法,返回值类型为int,返回的是两个数中最大的一个。方法有了,我们看下方法如何调用?
3.方法的调用
当程序调用一个方法时,程序的控制权交给了被调用的方法。当被调用方法的返回语句执行或者到达方法体闭括号时候交还控制权给程序。
我们看下上述这个示例如何调用:
public classDemo02 {public static voidmain(String[] args) {int result = max(4,8);
System.out.println("输出结果:"+result);
}public static int max(int a, intb){intresult;if(a >b){
result=a;
}else{
result=b;
}returnresult;
}
}
调用的代码为:int result = max(4,8);其中4和8位实参,而方法max中的a和b为形参。
有些方法是没有返回值,只是执行一些操作,这个时候我们定义返回值类型为void类型
public classDemo03 {public static voidmain(String[] args) {
printGrade(78.5f);
}public static void printGrade(floatscore){if(score >= 90){
System.out.println("成绩优秀!");
}else if(score >= 80){
System.out.println("成绩良好!");
}else if(score >= 70){
System.out.println("成绩中等!");
}else if(score >= 60){
System.out.println("成绩及格!");
}else{
System.out.println("成绩不及格!");
}
}
}
输出结果:
这个程序中printGrade执行输出打印操作,没有返回值。所以返回值类型定义void,也不需要return。
4.方法的重载
在同一个类中,相同的方法名称,但形参不同的方法。
比如上述示例中 判断两个数的最大值,只能对int类型,如果是浮点数就不行,那么我们就可以定义两个浮点数的大小判断,可以使用相同的方法名称
public classDemo02 {public static voidmain(String[] args) {int result1 = max(4,8);
System.out.println("两个整数的大小判断:"+result1);float result2 = max(23.4f,56.3f);
System.out.println("两个浮点数的大小判断:"+result2);
}public static int max(int a, intb){intresult;if(a >b){
result=a;
}else{
result=b;
}returnresult;
}public static float max(float a, floatb){floatresult;if(a >b){
result=a;
}else{
result=b;
}returnresult;
}
}
这里 我们就定义了两个都是max的方法,但是参数不一样,一个是比较整数的大小,一个是比较浮点数的大小。
5.变量的作用域
方法内定义的变量被称为局部变量。
局部变量的作用范围从声明开始,直到包含它的块结束。
局部变量必须声明才可以使用。
方法的参数范围涵盖整个方法。参数实际上是一个局部变量。
for循环的初始化部分声明的变量,其作用范围在整个循环。
但循环体内声明的变量其适用范围是从它声明到循环体结束。
所以我们可以在一个方法里,不同的非嵌套块中多次声明一个具有相同的名称局部变量,但你不能在嵌套块内两次声明局部变量。