方法:是用来解决一类问题的一个具有特殊功能的代码集。
方法的定义
一般而言,方法的定义格式如下:
访问修饰符 返回值类型 方法名(参数列表) {
方法体;
}
访问修饰符用以说明方法允许被访问的权限范围,可为 public、protected、private 或省略不写。一般使用 public 表示该方法可以被其他任何代码调用。关于几种修饰符的作用先在这挖个坑。
返回值类型用以说明该方法返回值的类型。如果方法不返回任何值,此处填 void ,并称该方法为无返回值方法;如果方法具有返回值,则需指定返回值的类型,并且在方法体中使用 return 语句返回该类型的值,此时方法为有返回值方法。
方法名同变量名一样采用小驼峰命名法,即当方法名由多个单词构成时,第一个单词首字母小写,其余单词首字母大写。
参数列表是在方法执行前要传递进方法的参数。参数可以是单个也可以是多个,甚至可以省略。多个参数间以逗号隔开。每个参数由参数类型和参数名组成,以空格隔开。根据参数的有无把方法分为无参方法和带参方法两种。
/**
* 一个无参无返回值方法:打印一次Good Job!
*/
public static void printGood() {
System.out.println("Good Job!");
}
/**
* 一个带参有返回值方法:判定所给参数是否为偶数
*/
public static boolean isEvenNumber(int number) {
return number % 2 == 0;
}
注意方法是不能嵌套的。main 方法也是方法,所以方法不能写在 main 的内部。
方法的使用
方法的使用是通过类的对象来实现的。首先要创建该方法所在类的对象,然后通过对象名.方法名(参数列表)
调用方法,若方法为无参方法则省略参数列表。对带参方法,调用时的参数列表不用像定义时那样写明参数类型,但所给参数要与定义时的参数的类型相吻合。若该方法和要调用的方法处在同一个类下,则可以不通过创建对象来调用。
跨类调用方法会在后续进行整理,这里以本类内方法的调用为例:
public class MethodDemo {
public static void main(String[] args) {
// 调用带参有返回值构造方法并用变量接受返回值
int number = 10;
boolean b = isEvenNumber(number);
System.out.println("Is " + number + " even?");
System.out.println(b);
printGood();
}
public static void printGood() {
System.out.println("Good Job!");
}
public static boolean isEvenNumber(int number) {
return number % 2 == 0;
}
}
该程序的执行流程为先通过 main 方法开始程序执行。在 main 方法中先定义了一个 int 型变量 number,然后将该变量作为参数传递到同属于这个类的带参方法 isEvenNumber() 中。由于该方法为有返回值方法且返回值类型为 boolean,故创建布尔型变量b接收该返回值,接着将结果输出在控制台上。
再然后,程序调用了同属于这个类的无参方法 printGood()。为演示跨类调用方法的流程,此处采用先生成类的对象的方式来调用方法。由于该方法没有返回值,故不需要再用变量接收结果。到此,程序执行完毕。
运行结果:
Is 10 even?
true
Good Job!
方法的重载
有时我们在定义方法时不确定该方法传进来的参数是几个、是什么类型,甚至可能都不确定调用时需不需要传进参数,要使一种方法同时照顾到好几种不同的情况,则需要方法的重载。方法的重载指在同一个类中包含了两个或两个以上方法名相同而方法参数的个数、顺序或类型不同的方法的现象。
以获取两个数中的较大值的方法为例:
public class MethodDemo {
public static void main(String[] args) {
getMax();
int a = 10, b = 20;
getMax(a, b);
double x = 10.0, y = 20.0;
System.out.println(getMax(x, y));
}
/**
* 无参无返回值方法
*/
public static void getMax() {
int a = 10, b = 20;
System.out.println(Math.max(a, b));
}
/**
* 重载带参无返回值方法
*/
public static void getMax(int max, int i) {
if (i > max) {
max = i;
}
System.out.println(max);
}
/**
* 重载带参有返回值方法
*/
public static double getMax(double x, double y) {
return Math.max(x, y);
}
}
特别说明,方法的重载只与参数有关,与方法的返回值无关。
新人上路,求给意见。