2013-08-16 124 views
1

这可能是一个相当容易回答的问题,但它一直在困扰我一段时间。返回内部和外部If语句

如果在if语句内部,在方法内部(用Java语言)有一个return语句,但是我在结尾添加另一个作为catch-all并避免错误,都返回值都是如果if语句是真的,那么一个接一个地开火?

一个例子:

public int getNumber() { 
if(5 > number) { 
return 5; 
} 
return 0; 
} 

结果:方法返回5,然后经由栈的逻辑,此后不久返回0。

或者,我需要使用一个外部变量,像这样:

int num = 1; 
public int getNumber() { 
if(5 > number) { 
num = 5; 
} 
return num; 
} 

结果:方法的变化而变化NUM为5,则NUM返回使用。我想在这种情况下,根据变量的用法,返回语句不一定是必需的。

在此先感谢。

回答

4

不,这两个值都不会返回。一个return语句停止在那里执行该方法,并返回其值。事实上,如果return之后的代码是编译器知道由于return而无法达到的代码,它会发出抱怨。

您不需要使用if以外的变量在最后返回它。但是,如果您的方法冗长而复杂,则由于只使用一条return语句,因此此技术可以提高可读性和清晰度。

+0

哦,对,代码将无法访问无论如何。感谢您的回应。 – A13X

1

只使用第一个return语句命中。该方法然后终止。

有一些代码约定,因为它们可能很难阅读,因此对多个返回语句不满意,但我不是其中之一。 :)

+0

没关系,我想我现在会打破惯例。感谢你的回答。 – A13X

+0

@ A13X - 这是一个非常非典型的约定。请参阅[应该一个函数只有一个返回语句?](http://stackoverflow.com/questions/36707/should-a-function-have-only-one-return-statement) – femtoRgon