方法调用小结
- 当程序执行到方法时,就会开辟一个独立的空间(栈空间)
- 当方法执行完毕,或者执行到return语句时,就会返回
- 返回到调用方法的语句
- 返回后,继续执行方法后面的代码
- 当main方法(栈)执行完毕,整改程序退出
成员方法的定义
访问修饰符 返回数据类型 方法名(形参列表..) { //方法体
语句;
return 返回值;
}
- 形参列表:表示成员方法输入 cal(int n) , getSum(int num1, int num2)
- 返回数据类型:表示成员方法输出, void 表示没有返回值
- 方法主体:表示为了实现某一功能代码块
- return 语句不是必须的。
注意事项和使用细节
-
访问修饰符 (作用是控制 方法使用的范围)
如果不写默认访问,[有四种: public, protected, 默认, private],
-
返回数据类型
- 一个方法最多有一个返回值 [思考,如何返回多个结果—返回数组 ]
- 返回类型可以为任意类型,包含基本类型或引用类型(数组,对象)
- 如果方法要求有返回数据类型,则方法体中最后的执行语句必须为 return 值; 而且要求返回值类型必须和 return 的 值类型一致或兼容
- 如果方法是 void,则方法体中可以没有 return 语句,或者只写 return ;
-
方法名
- 遵循驼峰命名法,最好见名知义,表达出该功能的意思即可, 比如 得到两个数的和 getSum, 开发中按照规范
方法调用细节说明
- 同一个类中的方法调用:直接调用即可
- 跨类中的方法A调用B类方法:需要通过对象名调用。比如 对象名.方法名(参数);
- 还与修饰符相关,后面会展开
成员方法的传参机制(非常重要)
基本数据类型,传递的是值(值拷贝 ),形参的 任何改变不影响实参
基本数据类型,传递的是值(值拷贝 ),形参的 任何改变不影响实参
基本数据类型,传递的是值(值拷贝 ),形参的 任何改变不影响实参
//举例 观察a b的变化
public static void main(String[] args) {
int a = 10;
int b = 20;
//创建 AA 对象 名字 obj
AA obj = new AA();
obj.swap(a, b); //调用 swap
System.out.println("main 方法 a=" + a + " b=" + b);//a=10 b=20
}
class AA { public void swap(int a,int b){
System.out.println("\na 和 b 交换前的值\na=" + a + "\tb=" + b);//a=10 b=20 //完成了 a 和 b 的交换
int tmp = a;
a = b;
b = tmp;
System.out.println("\na 和 b 交换后的值\na=" + a + "\tb=" + b);//a=20 b=10 } }
引用类型传递的是地址(传递也是值,但是值是地址),可以通过形参影响实参!
引用类型传递的是地址(传递也是值,但是值是地址),可以通过形参影响实参!
引用类型传递的是地址(传递也是值,但是值是地址),可以通过形参影响实参!
递归(非常重要)
注意事项
- 执行一个方法时,就创建一个新的受保护的独立空间(栈空间)
- 方法的局部变量是独立的,不会相互影响,比如n变量
- 如果方法中使用的是引用类型变量(比如数组,对象),就会共享该引
用类型的数据 - 递归必须向退出递归的条件逼近,否则就是无限递归,出现
Stack Overflow Error,死龟了:) - 当一个方法执行完毕, 或者遇到return, 就会返回, 遵守谁调用, 就
将结果返回给谁,同时当方法执行完毕或者返回时,该方法也就执行
完毕。