在这个代码示例中。在“this.method2();”之后会立即阅读什么?它会在返回returnedValue之前跳转到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);
}
答案 0 :(得分:2)
现在你的主要方法并没有调用method1,而是考虑这个主要方法:
public static void main(String[] args) { new Main().method1();}
假设Main
是主要类,在这一行会发生什么:
this.method2();
在method1返回一个值之前,是否调用了method2,因为在调用method2之前你没有调用return
。
如果method1定义如下:
public void method1(int returnedvalue)
{
returnedvalue=1;
return returnedvalue;
this.method2();
}
然后,method1将返回returnedvalue
而不调用method2(由于this.method2()
无法访问,因此上述代码不合适)。
在method2完成并返回之后,method1执行下一个return returnedvalue
语句,它将返回并在main
中继续执行。
正如其他人所说的那样,如果在方法2中引发异常而没有被捕获,则异常将从method2传播到method1,如果method1没有捕获它,它将传播到main,如果main不是#n;抓住它你的应用程序将崩溃:)。
答案 1 :(得分:0)
如果您正在运行method1()
,则会致电method2()
,在完成method2()
后,它将继续method1()
并始终返回1(除非method2()
将抛出异常)。
但是在这种情况下,您正在运行main()
,它只打印"returned value"
(字符串)并且它不会在任何时候调用method1()
。