Menu

Métodos em Java: como definir e chamar métodos

O que é um método em Java, como declará-lo e chamá-lo, valores de retorno versus void, o método estático main e como os métodos mantêm o código organizado e reutilizável.

Esta página tem editores executáveis - edite, execute e veja a saída na hora.

Por que os métodos existem

Um método é um bloco de código nomeado que você pode executar sempre que chamar o seu nome. Em vez de escrever as mesmas linhas repetidamente, você as escreve uma única vez dentro de um método e o chama quantas vezes precisar. Isso deixa os programas mais curtos, mais fáceis de ler e bem mais fáceis de corrigir: você muda a lógica em um único lugar e todos que chamam o método recebem a atualização.

Você já vem chamando métodos: System.out.println(...) é uma chamada de método, e list.size() também. Agora você vai escrever os seus próprios.

Declarando e chamando um método

A declaração de um método tem quatro partes: um tipo de retorno, um nome, um par de parênteses (para os parâmetros) e um corpo entre chaves. Aqui está o menor exemplo útil: um método que faz algum trabalho e não devolve nada:

Leia as partes de static void printGreeting():

  • static: permite que main o chame diretamente sem criar um objeto (mais sobre isso abaixo).
  • void: este método não devolve nenhum valor.
  • printGreeting: o nome que você usa para chamá-lo.
  • (): os parênteses vazios indicam que ele não recebe nenhuma entrada.

Você chama um método escrevendo o seu nome seguido de parênteses. As duas chamadas em main executam o corpo duas vezes, então isso imprime a saudação duas vezes.

Devolvendo um valor

A maioria dos métodos calcula algo e o devolve com return. O tipo de retorno antes do nome diz que tipo de valor sai; aqui, int:

square(5) é avaliado como 25, que você pode guardar em uma variável, imprimir ou usar dentro de uma expressão maior: uma chamada de método representa o valor que ela devolve. No momento em que return é executado, o método termina e o controle volta para quem o chamou. Qualquer código que venha depois de um return no mesmo caminho nunca é executado.

O tipo de retorno e o valor devolvido devem coincidir. Declarar int e tentar return "text"; é um erro de compilação: o compilador faz cumprir o contrato.

void versus um tipo de retorno

A distinção é simples: use um tipo de retorno real quando quem chama precisa receber um valor de volta, e void quando o método apenas faz algo (imprime, salva, atualiza o estado).

void logMessage(String msg)   // faz o trabalho, não devolve nada
int  add(int a, int b)        // calcula um valor que quem chama usa

Um erro comum de iniciantes é tentar usar o "resultado" de um método void:

int x = printGreeting();   // erro de compilação: printGreeting() devolve void

Não há nenhum valor para atribuir, então isso não compila. Se você se pegar querendo o resultado de um método void, é sinal de que ele deveria devolver algo.

Métodos que se ramificam e devolvem cedo

Você pode usar return em mais de um ponto. Devolver cedo, assim que você souber a resposta, costuma ser mais claro do que aninhar tudo dentro de else:

Como cada return sai imediatamente, vence a primeira condição que for satisfeita. Apenas garanta que todo caminho dentro de um método que devolve um valor termine em um return: se algum ramo puder sair sem devolver nada, o compilador reclama com "missing return statement". O return "F"; final cobre aqui o caso de saída.

O que static significa aqui

Você pode ter notado que todos os métodos acima são static. Um método static pertence à própria classe, não a nenhum objeto, então main (que também é static) pode chamá-lo diretamente pelo nome. Sem static, o método pertence a uma instância e você precisaria de um objeto para chamá-lo.

Por enquanto, enquanto você escreve programas pequenos cuja lógica vive junto de main, marque seus métodos auxiliares como static para que possam ser chamados da mesma maneira. Quando você começar a construir suas próprias classes e objetos, também vai escrever métodos não estáticos (de instância): isso vem com o capítulo de classes.

Variáveis locais ficam dentro do método

Variáveis declaradas dentro de um método existem apenas ali. Elas são criadas quando o método é executado e somem quando ele termina: quem o chama nunca as vê:

total e i vivem inteiramente dentro de sumTo. A única coisa que escapa do método é o valor que você return. Esse isolamento é uma vantagem: cada método é uma unidade autônoma sobre a qual você pode raciocinar sem se preocupar que suas variáveis temporárias vazem ou colidam com nomes de outro lugar.

Próximo: parâmetros de métodos

Todos os métodos aqui ou não recebiam nenhuma entrada ou recebiam um único valor. O verdadeiro poder vem de passar dados para dentro, e Java tem regras específicas sobre como os argumentos são passados, o que acontece com objetos versus primitivos e como dar a um parâmetro algo parecido com um valor padrão. É disso que trata a próxima página.

Perguntas frequentes

O que é um método em Java?

Um método é um bloco de código nomeado que você pode executar quando quiser chamando o seu nome. Ele agrupa uma tarefa em um único lugar para que você possa reutilizá-la em vez de repetir as mesmas linhas. Um método pode receber entradas (parâmetros) e devolver um resultado (um valor de retorno), ou fazer o seu trabalho sem devolver nada (void).

Como criar e chamar um método em Java?

Declare-o com um tipo de retorno, um nome e parênteses: static int square(int n) { return n * n; }. Depois chame-o pelo nome com os argumentos entre parênteses: int result = square(5);. Um método que não devolve nada usa void e é chamado como uma instrução independente, como printGreeting();.

O que significa void em um método Java?

void significa que o método não devolve nenhum valor: ele faz o seu trabalho (como imprimir) e não entrega nada a quem o chamou. Você não pode atribuir o resultado de um método void a uma variável. Se um método deve produzir um valor que quem chama vai usar, dê a ele um tipo de retorno real como int ou String e use return no lugar.

Coddy programming languages illustration

Aprenda a programar com o Coddy

COMEÇAR