1.成员方法的好处
- 提高代码的复用性
- 可以将实现的细节封装起来,然后供其他用户调用即可
public class Method02 {
public static void main(String[] args) {
//创建MyTools对象 使用方法完成输出
MyTools myTools = new MyTools();
int map[][] = {{12, 12, 64}, {123, 456, 786}, {123, 678, 68}};
//调用方法输出,不用直接用for循环来实现
myTools.printArr(map);
}
}
//把输出的功能,写到一个类的方法中,然后调用该方法即可
class MyTools {
//方法,接收一个二维数组
public void printArr(int map[][]) {
//对传入的map数组进行遍历输出
for (int i = 0; i < map.length; i++) {
for (int j = 0; j < map[i].length; j++) {
System.out.print(map[i][j] + " ");
}
System.out.println();
}
}
}
2.成员方法的定义
访问修饰符 返回数据类型 方法名 (形参列表..) {
//方法体语句;
return 返回值;
}
- 形参列表:表示成员方法输入cal(int n), getSum(int num1, int num2)
- 返回数据类型:表示成员方法输出,void表示没有返回值
- 方法主体:表示为了实现某一功能代码块
- return语句不是必须的
- 结合示意图来理解
3.方法的注意事项和使用细节
访问修饰符(作用是控制方法的使用范围)
- 如果不写 默认访问 (有四种:public, protected, 默认, private)
返回数据类型
- 一个方法最多有一个返回值(要返回多个值可以用数组返回)
- 返回类型可以是任意类型,包含基本类型或引用类型(数组,对象)
- 如果方法要求有返回数据类型,则方法体中最后的执行语句必须为(return 值) 而且要求返回值类型必须和return的值类型一致或兼容
- 如果方法是void,则方法体中可以没有return语句,或者只写return
方法名
- 遵循驼峰命名法,最好见名知义,表达出该功能的意思即可,比如getSum,开发中按照规范
public class MethodDetail {
public static void main(String[] args) {
AA aa = new AA();
int res[] = aa.getSumAndSub(8, 3);
aa.printArr(res);
}
}
class AA {
//一个方法最多有一个返回值 [要返回多个数值,可以使用数组]
//返回类型可以是任意类型,包含基本类型或引用类型(数组, 对象)
public int[] getSumAndSub(int n1, int n2) {
int res[] = new int[2];
res[0] = n1 + n2;
res[1] = n1 - n2;
return res;
}
public void printArr(int map[]) {
for (int i = 0; i < map.length; i++) {
System.out.print(map[i] + " ");
}
}
//如果方法要求有返回类型数据,则方法体中最后的执行语句必须为return
//而且要求返回值类型必须和return的值类型一致或兼容
public double f1() {
double d1 = 1.1 * 3;
return d1;
}
//如果方法是void,则方法体中可以没有return语句, 或者只写return;
//实际工作中,我们的方法都是为了完成某个功能,所以方法名要有一定的含义
//最好见名知意
public void f2() {
}
}
形参列表
- 一个方法可以有0个参数,也可以有多个参数,中间用逗号隔开 getSum(int n1, int n2)
- 参数类型可以为任意类型,包含基本类型或引用类型
- 调用带参数的方法时,一定对应着参数列表传入相同类型或兼容类型的参数
- 方法定义时的参数称为形式参数,简称形参 方法调用时传入的参数称为实际参数,简称实参,实参和形参的类型要一致或兼容、个数、顺序必须一致!
方法体
- 里面写完成功能的具体语句,可以是输入、输出、变量、运算、分支、循环、方法调用,但里面不能再定义方法!即:方法不能嵌套定义
方法调用细节说明
- 同一个类中的方法调用:直接调用即可 如 print(参数)
- 跨类中的方法A类调用B类方法:需要通过对象名调用 如 对象名.方法名(参数)
- 跨类的方法调用和方法的访问修饰符相关