Noob programmer
Noob programmer

Reputation: 23

What is the difference between void and return even though I can get same output on both?

i made a small program for summing two numbers if i used a void type method it will be like this

import java.util.Scanner;

public class NewClass {

    public static void main(String[] args) {
        Scanner input = new Scanner (System.in);
        System.out.println("enter x");
        int x = input.nextInt();
        System.out.println("enter y");
       int y = input.nextInt();
       getSum(x,y);
    }

    public static void getSum(int x, int y)
    {
        int sum = x + y;
        System.out.println("sum = " + sum);
    } }

here if i used a method that returns a value i will get same output!

    import java.util.Scanner;

public class NewClass {

 public static void main(String[] args)
 {
        Scanner input = new Scanner (System.in);

        System.out.println("enter x");
        int x = input.nextInt();
        System.out.println("enter y");
       int y = input.nextInt();
       int r = getSum(x,y);
        System.out.println("sum = " + r);
    }
    public static int getSum(int x, int y)
    {
        int sum = x + y;
        return sum;
    }}

so i'm confused what is the benefit of returning a value if i can finish my program with a void type method?

Upvotes: 2

Views: 336

Answers (6)

Shant Dashjian
Shant Dashjian

Reputation: 1010

Returning a value enables you to use that value in whichever way you want, including printing it or assigning it to variable for further processing. If on the other hand you print the value in the method and not return anything, i.e. making the method of type void, then that's all you can do with that method.

Upvotes: 0

Daniel
Daniel

Reputation: 1

When you use the keyword void it means that method doesn't return anything at all. If you declare a return type different to void at the method statement instead, that method must return obligatorily a valid value to the declared return type using the keyword return followed by a variable/value to send back to the class that called the method.

Defining methods here you have the java documentation for a method declaration

Answering your question, in small programs that work with primitive values it doesn't really matter but in complex program when you usually need to return specifics object types, i.e an ArrayList or actually an instance of a class you created you can't simply put it into a System.out.println and send it to the console, mostly you'll want to get something from a method and that something usually can be a more complex object than an integer or a string, the way to get that something is through the return type defined by the method's statement.

A common use of return types is when your method is static and it can't interact with the non-static instance variables of the class, this type of static methods usually get values from their arguments, do a certain kind of progress and then return a result that the method's caller can use.

Upvotes: 0

Rakesh Narang
Rakesh Narang

Reputation: 79

I can understand why you have this question.

First of all, you should know that in real development, we do not use console logs.

System.out.Println();

This is used only for debugging and that too in very rare cases.

The whole point of a function is to take some input and convert to something else.

So,

public static int getSum(int x, int y) {
 return x+y;
}

public static void main(String[] args) {
 System.out.Println(getSum(5,10));
}

This is the better solution.

Best Regards,

Rakesh

Upvotes: 0

Robin
Robin

Reputation: 531

I think the answer is that, if you're calling getSum() method with a return type in any other class.. you would get a returned value which can be used for further processing. . Where as in void that's not possible... Hope this helps... Reply if any doubts..

Upvotes: 0

yasir jafar
yasir jafar

Reputation: 187

The point is not to get the result but the way we get the result
consider

public static void getSum(int x, int y)
    {
        int sum = x + y;
        System.out.println("sum = " + sum);
    }

will print the output to the screen after calculation
but when we use return as you have done it later

public static int getSum(int x, int y)
    {
        int sum = x + y;
        return sum;
    }

this function will respond back the sum. that sum can be stored in a variable can be used afterwards like in recursion

Upvotes: 1

Priyanka Jain
Priyanka Jain

Reputation: 471

In small programs, you won't get the difference but while writing the big programs you have to make several functions which are being called several times and you may need the output of one function into other. In that case, you will require return so that the output of one function can be used into other.

Hope this helps!!

Upvotes: 0

Related Questions