Um trecho de palestra com um mentor como parte do curso Codegym University. Inscreva-se no curso completo.


"Você de novo, Amigo. Bem, olá."

"Parece que você não está muito feliz em me ver, Diego?"

"Tenho a impressão de que você acha que já aprendeu tudo o que há para saber sobre métodos em Java."

"Ah, eu não..."

"Acho que não! Você não sabe nem da metade."

"Claro, não discordo...

"Ok, chega de conversa. É hora de começar. E vamos começar com algo simples. Por exemplo, o fato de Java ter uma instrução de retorno . Ela permite que você encerre instantaneamente um método no qual é chamado. Aqui está a instrução:

return;

"É simples: a palavra solitária returnseguida por um ponto e vírgula. Assim que o programa executa esta instrução, o método atual sai e o método de chamada continua.

"Se returnfor chamado no mainmétodo, o mainmétodo terminará imediatamente e, com ele, todo o programa.

Exemplo:

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);
   }
}
O fill método preenche parte do array passado com value.

A parte do array a ser preenchida é definida pelos índices from e to.

Se from for menor 0ou to  maior que o comprimento da matriz, o método será encerrado imediatamente.

"O programa acima possui um fillmétodo que preenche o array passado para ele com value. Ele não preenche o array inteiro, apenas a parte especificada pelos índices frome to.

"No início do fillmétodo, os valores passados ​​são verificados para garantir que sejam válidos. Se fromfor menor que 0 ou tomaior que o comprimento da matriz, o fillmétodo será encerrado imediatamente (executará uma returninstrução)."

"Entendi. É só isso que essa declaração faz?"

"Na verdade, a returninstrução é mais útil do que você pensa. É tão útil que é encontrada em quase todos os métodos em Java. E agora vou levar você a entender por que isso acontece.

Métodos com um resultado,void

"Você provavelmente se lembra de que existem declarações e expressões . Qual é a diferença entre elas?"

"Se não me engano, uma expressão, ao contrário de uma afirmação, tem um significado que pode ser usado em algum lugar."

"Correto. E, em Java, os métodos também podem ter um valor . E esta é uma notícia muito boa: os métodos não são apenas capazes de fazer algo com base nos parâmetros de entrada, mas também, por exemplo, avaliar algo e retornar o resultado de o cálculo .

"A propósito, você já encontrou esses métodos:

double delta = Math.abs(d1 - d2);
O abs()método retorna um duplo
Scanner console = new Scanner(System.in);
int x = console.nextInt();

O nextInt()método retorna umint
String str = "Hello";
String s2 = str.toUpperCase();
O toUpperCase()método retorna umString
int[] data = {1, 4, 5, 6, 7, 8, 11};
int[] array = Arrays.copyOf(data, 4);

O copyOf()método retorna umint[]

"Cada método só pode retornar um valor de um tipo predeterminado . O tipo de retorno é determinado quando o método é declarado:

public static Type name(parameters)
{
  method body
}

Onde nameé o nome do método, parametersé a lista de parâmetros do método e typeé o tipo de resultado que o método retorna.

Para métodos que não retornam nada, existe um tipo de espaço reservado especial: void.

"Em outras palavras, se eu escrever meu método e não quiser retornar nada, declaro o tipo do método como void, e pronto?"

"Sim. E também devo dizer que Java tem muitos desses métodos.

Retornando um resultado

"Descobri como declarar um método que retorna o resultado de um cálculo/trabalho. Como faço para retornar o resultado do próprio método?"

"Essa é uma pergunta válida. A returndeclaração nos ajuda aqui mais uma vez. Passar um resultado de um método se parece com isto:

return value;

"A returninstrução encerrará o método imediatamente. E valueé o que o método deve retornar ao método de chamada quando ele sair. O tipo de valuedeve corresponder ao Typeespecificado na declaração do método. Aqui estão alguns exemplos para reforçar o que você aprendeu:

Exemplo 1. O método calcula o mínimo de dois números:

int min(int a, int b)
{
   if (a < b)
     return a;
   else
     return b;
}
O método retorna o mínimo de dois números.

Se a < b
retornar a
Caso contrário,
retornarb

Exemplo 2. O método duplica a string passada para ele nvezes:

String multiple(String str, int times)
{
   String result = "";

   for (int i = 0; i < times; i++);
     result = result + " "+ str;
   return result;
}
O método recebe dois parâmetros — uma string e o número de vezes que a string deve ser repetida.
Uma string vazia é criada para o resultado futuro.

Em um loop com timesiterações, um espaço e a string strsão adicionados à string result.
A string resulté retornada como resultado do método.

Exemplo 3: O método calcula o máximo de dois números usando o operador ternário:

int max(int a, int b)
{
   return (a > b ? a : b);
}
O método retorna o máximo de dois números.

retornar (se a > b, então a, caso contrário b)

"Excelente. Métodos são meu novo superpoder!"

"Só se você praticar o suficiente em tarefas práticas. Câmbio e para fora."