Lastly, one of the most useful things we can do with methods in our code is return a value from a method. This allows us to use a method to perform an action or calculation that results in a single value that we can use elsewhere in our code. We can even use these method calls just like we use variables in other arithmetic expressions. Let’s take a look at how that works.
Returning a Value
To return a value from a method in Java, we use the special keyword return
, followed by an expression representing the value we’d like to return. We must also declare the type of that value in our method declaration, taking the place of the void
keyword we’ve been using up to this point.
Here’s an example program showing how to use the return
keyword and store that returned value in a variable.
public class Return{
public static void main(String[] args){
int returnValue = last(1, 3, 5, 7, 9);
System.out.println(returnValue); // 9
}
static int last(int ... items){
if(items.length > 0){
return items[items.length - 1];
}
return -1;
}
}
Let’s review this program carefully to see what parts of the program are important for returning a value:
- First, instead of
void
, we use the keywordint
in the declaration of ourlast()
method,static int last(int ... items)
. This is because the method must return a value with the typeint
. - Inside of the method, we see two instances of the
return
keyword. Each instance is followed by a value or expression that results in an integer, which is then returned from the method. As soon as the method reaches areturn
keyword, it immediately stops executing and returns that value. So, if theitems
variable length parameter is empty, the method will return $-1$. Otherwise, it will return the last item in theitems
parameter. - In the
main()
method, we see that we’ve included the method call tolast()
on the right-hand side of a variable assignment statement. So, once we reach that line of code, the program will call thelast()
method and store the returned value in thereturnValue
variable inmain()
Compiler Messages
The Java compiler is a very crucial part of making sure that each method we create returns a value correctly. When we compile our code, the compiler checks to make sure that each method that includes a return type other than void
will return a value along all code paths. That means that if one branch of an If-Else statement returns a value, then either the other branch or code below it should also return a value.
In addition, it will make sure that the type of the value returned matches the type that is expected by the method’s declaration.
Finally, just like every other variable assignment in Java, when we store the result of a method call in a variable, Java will also make sure that the variable storing the value has a type that is compatible with the type being returned from the method.
So, if we receive error messages from the Java compiler regarding invalid return types or values in our methods, we’ll need to carefully check our code to make sure we aren’t violating one of those rules.