在这个代码示例中:"this.method2();"之后会读到什么?它会跳转到method2()之前返回的返回值?
public int method1(int returnedValue) {
// Do something
returnedValue = 1;
this.method2(); // Where will it go after this line?
return returnedValue;
}
public void method2() {
// Do something
}
public static void main(String[] args) {
sp.method2();
Stuff sp = new Stuff();
System.out.print(returned value);
}
现在你的主方法没有调用method1,而是考虑这个主方法:
public static void main(String[] args) { new Main().method1();}
假设Main
是主类,这一行会发生什么:
this.method2();
是method2在method1返回值之前被调用,因为你在调用method2之前没有调用return
。
如果method1被这样定义:
public void method1(int returnedvalue)
{
returnedvalue=1;
return returnedvalue;
this.method2();
}
那么method1将返回returnedvalue
而不调用method2(上面的代码当然是坏的,因为this.method2()
不可达)。
在method2结束并返回后,method1执行下一条语句,即return returnedvalue
,它将返回并继续执行main
。
正如其他人所说,如果在method2中引发异常而没有被捕获,异常将从method2传播到method1,如果method1没有捕获它,它将传播到main,如果main没有捕获它,你的应用程序将崩溃:)。
如果您正在运行method1()
,它将调用method2()
,在它完成运行method2()
之后,它将继续运行method1()
并始终返回1(除非method2()
将抛出异常)。
但是在这种情况下,您正在运行main()
,它只打印"returned value"
(String),并且在任何时候都没有调用method1()
。