创建方法就是为了被使用或者被调用。根据方法是否有返回值,分为两种情况:如果方法有返回值,调用者通常用一个变量来接收该方法被调用后的返回值;如果方法没有返回值,即为void方法,那么调用者通过一条语句调用即可,void方法不能有赋值操作。
【例2-18】
编写一个测试程序,给定两个int型值,通过调用get Max方法得到最大值。
程序如图2-34所示。
(www.xing528.com)
图2-34 方法调用示例
该程序中,main()方法是由JVM调用的,当main方法调用get Max()方法时,将int型变量x的值2(实参)传递给get Max()方法的int型变量a(形参),将int型变量y的值5(实参)传递给get Max()方法的int型变量b(形参),get Max()方法根据传递来的参数,执行自己方法体中的语句,通过return语句将结果返回给main()方法调用处,main()方法通过int型变量max接收该返回值。程序控制权回到调用者main()方法中,继续执行。
方法的调用过程需要结合JVM栈内存分配来学习。本例中,JVM调用main()方法,在虚拟机栈里开辟了一个main()方法栈帧,局部变量int型变量max、x和y都存储其中。当main方法调用get Max()方法时,在栈顶又开辟get Max()方法栈帧,局部变量int型参数a、int型参数b和int型变量max都存储其中,a和b的值通过方法调用时的实参传递进来。当get Max()方法执行结束时,JVM会将get Max()栈帧里局部变量max的值通过return语句返回给main()方法栈帧局部变量max,get Max()方法栈帧被弹出释放,main()方法栈帧重为栈顶,继续执行下一条语句。
本例第8行的println()方法就是一个不带返回值的方法调用,不能做赋值操作。注意,System类中的out是一个PrintStream类的静态常量,可查看PrintStream类API,该方法为:public void println(String x)。
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。