[修饰符列表] 返回值类型 方法名(形参列表) { 方法体; }
类名.方法名(实际参数列表);
public class MethodTest { public static void main(String[] args) { MethodTest.sumInt(100, 200); MethodTest.sumDouble(1.0, 2.0); } public static void sumInt(int x, int y) { System.out.println(x + "+" + y + "=" + (x + y)); } public static void sumDouble(double a, double b) { System.out.println(a + "+" + b + "=" + (a + b)); } }
Note:
一个方法返回值不是void的情况下,要求方法体中必须有负责返回数据的语句即return
并且返回的数据类型要和声明的一致
return关键字的语句只要执行,方法结束
在同一个域中,return后面不能写任何代码
方法返回值类型是void的时候,方法体中允许出现return;语句
方法的返回值在接收的时候要求变量的数据类型和返回值一致,也遵循自动类型转换规则
允许在表的一端插入和删除(栈顶)
push(入栈)-pop(出栈)
特点:先进后出,后进先出
方法区中存储类的信息,可以理解为代码片段
java程序开始执行的时候先通过类加载器子系统找到硬盘上的字节码文件,将其加载到java虚拟机的方法区中
开始调用main方法,main方法调用的瞬间会给main方法在栈内存中分配所属的活动空间,压栈
方法只定义不调用java虚拟机不会在栈内存给该方法分配活动空间
方法执行结束,活动空间被释放掉,弹栈
public class MethodTest02 { public static void main(String[] args) { System.out.println("main begin"); m1(); System.out.println("main over"); } public static void m1() { System.out.println("m1 begin"); m2(); System.out.println("m1 over"); } public static void m2() { System.out.println("m2 begin"); System.out.println("m2 over"); } } main begin m1 begin m2 begin m2 over m1 over main over
是指在一个类中定义多个重名的方法,但要求每个方法具有不同的参数的类型或者参数的个数。调用重载方法时,Java编辑器能通过检查调用的方法的参数类型和个数选择一个恰当的方法。
在同一个类当中,如果多个功能是相似的,可以考虑将它们的方法名定义得一致,使用方法重载机制
构成方法重载的三个条件:
public class OverloadTest { public static void doSome(int i) { } public static void doSome(long i) { } public static void doSome(int i, long j) { } public static void doSome(long j, int i) { } public static void doSome(long x, int y) { } public static int doSome(int i) { return 1; } void doSome(int i) { } }
方法重载和修饰符无关
public class RecursionTest03 { public static void main(String[] args) { int n = 5; int result = accumulate(n); System.out.println("1到"+ n + "的和是:" + result); } public static int accumulate(int n) { if(n == 1) { return 1; } return n + accumulate(n - 1); } }