A Return inside and outside an If Statement

65,013

Solution 1

No, both values aren't going to be returned. A return statement stops the execution of the method right there, and returns its value. In fact, if there is code after a return that the compiler knows it won't reach because of the return, it will complain.

You don't need to use a variable outside the if to return it at the end. However, if your method is long and complex, this technique can help readability and clarity because only one return statement is used.

Solution 2

Only the first return statement hit is used. The method then terminates.

There are some code conventions that frown on multiple return statements because they might be hard to read, but I'm not one of them. :)

Share:
65,013
A13X
Author by

A13X

~My first language was Java, and my OO programming is solid. I plan to do more in the C/.NET languages though. I develop apps and enjoy game programming.~ ⬆️ Wow, I wrote that ca. 2012. Having dabbled in many different languages since, and created these Android apps, I hope this serves as inspiration on your journey, fellow time traveler.

Updated on August 17, 2020

Comments

  • A13X
    A13X almost 4 years

    This is probably a fairly easy question to answer, but it has been bugging me some time.

    If there is a return statement inside an if statement, inside a method (in the Java language), but I add another at the end as a catch-all and to avoid the error, are both return values going to be fired one after the other if the if statement is true?

    An example:

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

    Result: Method returns 5, and then via stacks logic, returns 0 shortly thereafter.

    Or, do I need to use an outside variable like so:

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

    Result: Method changes variable num to 5, then num is returned for use. I suppose in this case, the return statement wouldn't necessarily be required depending on the variable's usage.

    Thanks in advance.

  • A13X
    A13X almost 11 years
    Oh right, the code would be unreachable anyway. Thanks for the response.
  • A13X
    A13X almost 11 years
    That's alright, I guess I'll break convention for now. Thanks for the answer.
  • femtoRgon
    femtoRgon almost 11 years
    @A13X - It's a pretty atypical convention. See Should a function have only one return statement?