"OK, vamos tentar outra abordagem. Mostrarei como funciona a chamada de métodos e, em seguida, tente passar pela lição anterior novamente, ok?"

"Vamos fazê-lo."

"Ótimo. Vou falar sobre como chamar funções/métodos e os valores que eles retornam (valores de retorno)."

"Comandos, ou instruções, são agrupados em métodos para que possam ser executados como um único bloco, como um único comando complexo. Para fazer isso, você precisa escrever o nome do método (função) e listar os argumentos do método entre parênteses."

Exemplo
package com.codegym.lesson2;
public class MethodCall
{
    public static void main(String[] args)
    {
         print4("I like to move it, move it.");
    }

    public static void print4(String s)
    {
        System.out.println(s);
        System.out.println(s);
        System.out.println(s);
        System.out.println(s);
    }
}

"No exemplo acima, escrevemos uma função que exibirá a string passada na tela quatro vezes. Em seguida, chamamos a print4função na linha 6."

"Quando o programa chegar à linha 6, ele pulará para a linha 9, atribuindo o valor 'I like to move it, move it'à variável s."

"Então as linhas 11-14 serão executadas. A função terminará e o programa continuará na linha 7."

"Eu vejo."

"Você não apenas pode passar argumentos (valores) para uma função - uma função pode retornar o resultado de seu trabalho (valor de retorno). Isso é feito com a palavra-chave return. É assim que fica:"

Exemplo 1.
Determine o mínimo de dois números.
public class MethodCall
{
   public static void main(String[] args)
   {
      int a = 5, b = 7;
      int m = min(a, b);
      System.out.println("The minimum is "+ m);
   }

   public static int min(int c, int d)
   {
      int m2;
      if (c < d)
           m2 = c;
      else
           m2 = d;

      return m2;
   }
}
Veja como funciona:
public class MethodCall
{
   public static void main(String[] args)
   {
      int a = 5, b = 7;
      int c = a, d = b;
      int m2;
      if (c < d)
           m2 = c;
      else
           m2 = d;

      int m = m2;
      System.out.println("The minimum is "+ m);
   }
}

"Acho que está começando a fazer sentido! O código nas colunas esquerda e direita é o mesmo. Só que o código à esquerda tem uma função independente."

"A função calcula um determinado valor e usa a instrução de retorno para passar esse valor para o que quer que a chame. Pelo menos, é assim que eu vejo."

"E você está certo!"

"Mas o que é esse tipo vazio?"

"Algumas funções simplesmente fazem algo sem computar ou retornar qualquer valor, como nosso método main() . Um tipo de retorno especial – void – foi criado para tais funções."

"Por que não declarar nada se uma função não retornar nada?"

"Lembra como declaramos qualquer variável? Tipo e nome. Para funções, declaramos um tipo, nome e parênteses. Um nome de função seguido por parênteses é como você chama a função."

"Então, foi mais fácil inventar um 'tipo vazio' do que dividir as funções em duas categorias - aquelas que retornam valores e aquelas que não retornam?"

"Exatamente! Você é muito esperto, meu garoto."

"Como retornamos um tipo void?"

"Nós não. Funciona assim. Ao executar a instrução return, a máquina Java calcula o valor da expressão à direita da palavra 'return', armazena esse valor em uma parte especial da memória e termina imediatamente a função . O valor armazenado é usado onde a função foi chamada, como resultado da chamada da função. Você pode ver isso no exemplo que dei anteriormente."

"Você quer dizer a parte onde int m = min(a, b) é transformada em m = m2?"

"Sim. Após a conclusão da função, tudo funciona como se o valor de retorno da função estivesse escrito em seu lugar. Repita esta frase em sua mente e observe o código no último exemplo. "

"Acho que isso só parece fácil. Na verdade, é difícil. Só entendi algumas partes."

"Tudo bem. Na primeira tentativa, você só pode entender as coisas que já sabe. Quanto mais coisas você não entende, mais fundo você está mergulhando em algo novo e melhores serão seus resultados. Isso ficará mais claro com o tempo ."

"Bem, se você diz. Vamos continuar."