я сделал небольшую программу для суммирования двух чисел, если бы я использовал метод типа void, это было бы так
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);
} }
здесь, если я использовал метод, который возвращает значение, я получу тот же результат!
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;
}}
поэтому я запутался, в чем преимущество возврата значения, если я могу закончить свою программу с помощью метода типа void?
getSum(...)
печатает оператор, а во второй он возвращает только сумму, а вывод ее на экран выполняется в методеmain
. Дополнительную информацию о типах возврата можно найти в этом руководстве от Oracle. - person Turing85   schedule 14.04.2018getSum
, это нарушит контракт метода, поскольку этот метод должен ТОЛЬКО получить сумму. В этом случае вам нужно будет вернуть значение, чтобы его можно было использовать в другом месте в другом расчете. В вашем конкретном случае вам действительно не нужно возвращать значение, поскольку вы просто печатаете сумму. Однако это неправильный дизайн, поскольку метод называетсяgetSum
, поэтому он должен позволять вызывающей стороне получать значение суммы (путем ее возврата). - person Jake Miller   schedule 14.04.2018getSum
, когда у нас есть+
? Выбор дизайна. В вашем случае удалениеprintln
изgetSum
повысит удобство использованияgetSum
. Если этот метод печатает, то вы должны использовать его только в тех областях, где требуется немедленная печать суммы. Если вы удалилиprintln
, вы (или кто-либо, кому вы разрешите использовать этот метод) можете повторно использоватьgetSum
для других целей, которые могут не требовать немедленного вывода суммы. - person Dioxin   schedule 14.04.2018