请问this.method2();跳过返回值?

时间:2016-06-30 13:27:59

标签: java methods

在这个代码示例中。在“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);
}

2 个答案:

答案 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()