这是我参加的大学Java课程的一个问题.我的老师说答案是D - "程序终止",但我认为答案是C - "控制返回到方法C".
什么是正确答案,为什么?
如果方法A调用方法B,方法B调用方法C,方法C调用方法D,当方法D完成时,会发生什么?
A.控制返回到方法A.
B.控制返回方法B.
C.控制返回方法C.
D.程序终止
答案是c,除非方法D导致程序终止,那么答案是d.
方法调用的行为在invokevirtual操作码(操作代码)的定义中明确定义.从Java虚拟机在线指令参考:
invokevirtual调度Java方法.它在Java中用于调用除接口方法(使用invokeinterface),静态方法(使用invokestatic)以及处理的少数特殊情况之外的所有方法invokespecial.例如,当您使用Java编写时:
Run Code Online (Sandbox Code Playgroud)Object x; ... x.equals("hello");这被编译成如下:
Run Code Online (Sandbox Code Playgroud)aload_1 ; push local variable 1 (i.e. 'x') onto stack ldc "hello" ; push the string "hello" onto stack ; invoke the equals method invokevirtual java/lang/Object/equals(Ljava/lang/Object;)Z ; the boolean result is now on the stack找到方法后,invokevirtual将调用该方法.(...)当invokevirtual调用的方法返回时,任何单个(或双)字返回结果都放在当前方法的操作数堆栈上,并继续执行字节码中invokevirtual之后的指令.
| 归档时间: |
|
| 查看次数: |
1243 次 |
| 最近记录: |