代码如图2-5所示。
图2-5 含有三个方法的代码
从代码上分析:(1)这个Example14类有三个方法,分别是show1(),show2(),main()。
(2)show1()这个方法有一个参数,且有返回值;show2()这个方法是无参方法,且无返回值,用void标识。
(3)在main()主方法中,调用show1(2)、show2()。
运行结果如图2-6所示。
图2-6 运行结果
为何是这个结果呢?
System.out.println(show1(2));这行代码输出show1(2)的值,自然要调用show1(2)这个方法,到第4行执行代码,并且原来的形式参数a换成实际参数2来调用这个方法。a=2当然小于3,走if的反面即else分支,输出a<3的字样,接着返回值为0,这个0返回给第24行代码,输出0这个值,这正是运行结果第二行上显示的。
第25行show2();运行路径是先到第13行执行show2()这个方法,执行完成之后,回到第25行的后继语句第26行处执行别的代码,此处第26行整个程序结束。现在再来讲从第13行执行到20行。在这个show2()方法体内循环输出变量i的值,但是如果i与10相等的时候就返回了,所以看到的输出结果中有i=0一直到i=9为止。
注1: 如果将任务14的代码修改成如图2-7所示,结果如何呢?
只是稍作修改,将main()方法中System.out.println(show1(2));这句给注释掉。实际上就不起作用了,而换作show1(2);。
图2-7 修改后的代码
修改后的运行结果如何呢?结果如图2-8所示。
图2-8 运行结果
发生变化的已经用箭头标出,没有输出show1(2)这个方法的返回值,返回值是输出才能看得到的。
注: 任务14在调用对象方法时没有使用“对象的方法”格式,这是如何?
回答是: 在于使用了关键字static修饰。