1. return진술

Java 메서드에 대해 이미 모두 배웠다고 생각하십니까? 당신이 안다고 생각하는 것이 무엇이든, 당신은 여전히 ​​절반도 모릅니다.

간단한 것부터 시작해 봅시다. 예를 들어 Java에는 이를 호출하는 메서드를 즉시 종료할 수 있는 return 문이 있습니다. 성명서는 다음과 같습니다.

return;

간단합니다. return세미콜론이 뒤에 오는 단독 단어입니다. 프로그램이 이 문을 실행하자마자 현재 메서드가 즉시 종료되고 호출이 계속됩니다.

메소드 return에서 가 호출되면 메소드 가 즉시 종료되고 전체 프로그램이 종료됩니다.mainmain

예:

class Solution
{
   public static void fill(int[] data, int from, int to, int value)
   {


     if (from < 0 || to > data.length)
       return;

     for (int i = from; i < to; i++)
     {
       data[i] = value;
     }
   }

   public static void main(String[] args)
   {
     int[] months = {1, 2, 3, 4, 5, 6, 7, 8 ,9, 10, 11, 12};
     fill(months, 2, 10, 8);
   }
}


fill 메서드는 전달된 배열의 일부를 value.
채울 배열 부분은 인덱스 from 및 로 정의됩니다 to.
가  배열 길이 from 보다 작 0거나 크면 메서드가 즉시 종료됩니다.to

위의 프로그램에는 fill전달된 배열을 value. 전체 배열을 채우지 않고 인덱스 from및 로 지정된 부분만 채웁니다 to.

메서드 시작 시 fill 전달된 값이 유효한지 확인하기 위해 확인됩니다. from0보다 작거나 배열 to 길이보다 크면 fill메서드가 즉시 종료됩니다( return문 실행).

return문장은 유용합니다. Java의 거의 모든 메서드에는 하나가 있으며 그 이유는 다음과 같습니다.



2. 결과가 있는 방법,void

문장이 있고 표현이 있다는 것을 알아낸 적이 있음을 기억하십시오 . 표현식은 문장과 달리 어디선가 사용할 수 있는 값을 가지고 있습니다.

그리고 Java에서 메소드는 값을 가질 수 있습니다 . 그리고 이것은 매우 좋은 소식입니다. 메소드는 입력 매개변수를 기반으로 무언가를 할 수 있을 뿐만 아니라 예를 들어 무언가를 평가하고 계산 결과를 반환할 수 있습니다 .

그건 그렇고, 당신은 이미 다음과 같은 방법을 접했습니다.

double delta = Math.abs(d1 - d2);
메서드 abs()는 double을 반환합니다.
Scanner console = new Scanner(System.in);
int x = console.nextInt();

메서드 nextInt()int
String str = "Hello";
String s2 = str.toUpperCase();

메서드 toUpperCase()String
int[] data = {1, 4, 5, 6, 7, 8, 11};
int[] array = Arrays.copyOf(data, 4);

메서드 copyOf()int[]

각 메소드는 하나의 미리 결정된 유형의 하나의 값만 반환할 수 있습니다. 반환 유형은 메서드가 선언될 때 결정됩니다.

public static Type name(parameters)
{
  method body
}

여기서 name 는 메서드 이름, parameters 는 메서드 매개변수 목록, 는 type 메서드가 반환하는 결과의 유형입니다.

아무것도 반환하지 않는 메서드의 경우 특별한 자리 표시자 유형이 있습니다: void.

자신만의 메서드를 작성 중이고 호출 메서드에 아무 것도 반환하고 싶지 않습니까? 메소드의 유형을 로 선언하면 void문제가 해결됩니다. Java에도 이와 같은 메서드가 많이 있습니다.


3. 결과 반환

방금 계산 결과를 반환하는 메서드를 선언하는 방법을 알아냈지만 이 결과가 메서드 자체에 어떻게 발생합니까?

return진술은 여기서 다시 한 번 우리를 도와줍니다. 메서드에서 결과를 전달하는 것은 다음과 같습니다.

return value;

return메서드를 즉시 종료하는 문은 어디에 있습니까? 그리고 value 메서드가 종료될 때 호출 메서드에 반환하는 값입니다. 의 유형은 메소드 선언에 지정된 value것과 일치해야 합니다 .type

예 1. 메서드는 두 숫자의 최소값을 계산합니다.

int min(int a, int b)
{
   if (a < b)
     return a;
   else
     return b;
}
이 메서드는 두 숫자 중 최소값을 반환합니다. 반환하는

경우 그렇지 않은 경우 반환a < b
a

b

예 2. 메서드는 전달된 문자열을 여러 n번 복제합니다.

String multiple(String str, int times)
{
   String result = "";
   for (int i = 0; i < times; i++)
     result = result + " "+ str;
   return result;
}
이 메서드는 문자열과 문자열이 반복되어야 하는 횟수라는 두 가지 매개 변수를 사용합니다.
향후 결과를 위해 빈 문자열이 생성됩니다.

반복이 있는 루프에서는 times공백과 str문자열이 문자열에 추가됩니다 result. 메서드의 결과로

문자열이 반환됩니다.result

예 3: 메서드는 삼항 연산자를 사용하여 두 숫자의 최대값을 계산합니다.

int max(int a, int b)
{
   return (a > b ? a : b);
}
이 메서드는 최대 2개의 숫자를 반환합니다.

반환( if a > b, then a, 그렇지 않으면 b)