1.方法的定义
格式:
[修饰符列表] 返回值类型 方法名(形式参数列表){
方法体;
}
注意点:
- 修饰符是可选的,不是必选项
- 返回值类型是java中合法的数据类型,无返回值为void,有返回值时,必须有return 值;
- return;或 return 值;执行后,当前方法结束
- 方法名见名知意,小驼峰式
- 形参列表中的参数为局部变量,可以没有
public static int m(){
boolean flag = true;
if(flag){
//编译器认为flag为boolean类型,可以为队或错,所以return语句可能不会执行
//报错:缺少return语句
return 1;
}
}
public static int m1(){
boolean flag = true;
return flag?1:0;
//使用三目运算符会使代码很简练
}
2.方法的调用
格式:
类名.方法名(实际参数列表)
注意点:
- 一个java文件中可以有多个类,跨类进行方法调用时,类名. 必须写
- main方法也是一个普通方法,只是最先执行最后结束,其他方法中也可以调用定义的方法
- break 终止循环
- return 终止方法
3.JVM的内存结构
4.栈数据结构
数据结构通常是存储数据的容器,该容器可能有不同的结构
- 常见的数据结构:数组、链表、图、二叉树、栈、队列
- 通常与数据结构一块出现的为算法:排序算法、查找算法…
5.方法执行过程中的内存变化
public class Test05 {
public static void main(String[] args) {
System.out.println("main begin");
int x = 100;
m1(x);
System.out.println("main over");
}
public static void m1(int i){
System.out.println("m1 begin");
m2(i);
System.out.println("m1 over");
}
public static void m2(int i){
System.out.println("m2 begin");
m3(i);
System.out.println("m2 over");
}
public static void m3(int i){
System.out.println("m3 begin");
System.out.println(i);
System.out.println("m3 over");
}
}
6.方法重载
何时使用:功能相似,可以让方法名相同
java编译器通过方法名区分方法,如果方法名相同,通过方法的参数类型区分
重载需要满足的条件:
- 在同一个类中
- 方法名相同
- 参数列表不同(个数、类型、顺序)
注意点:与方法的返回值类型、修饰符列表无关
7.方法递归
注意点:
- 方法调用自己,就是递归。必须有结束条件,否者会栈内存溢出
- 不要轻易使用递归,消耗内存大、使用不当会使JVM撕掉;循环效率高、消耗的内存少。但是极少数情况下需要使用递归
StackOverflowError的解决方法
- 查看递归的结束条件是否正确
- 手动调整JVM堆栈内存大小 DOS窗口 java -x
- 继续扩大,租机器
- …
传送门
上一章:JavaSE基础 第六章 控制语句
下一章:JavaSE基础 第八章 认识面向对象