Atualizado: 19/07/2025

Este conteúdo é original e não foi gerado por inteligência artificial.

Parâmetros e Argumentos em Métodos Java

Parâmetros funcionam como variáveis de entrada para um método, permitindo que dados externos sejam passados para sua lógica interna. Isso torna os métodos mais versáteis e poderosos.

É crucial entender a distinção técnica entre parâmetros e argumentos:

  • Parâmetro: É a variável declarada na assinatura do método.
  • Argumento: É o valor real que é passado para o parâmetro durante a chamada do método.

Ao declarar um método, você especifica uma lista de parâmetros, cada um com seu tipo e nome.

// 'x' e 'y' são os parâmetros do método
static void sum(int x, int y) {
    int z = x + y;
    System.out.println(z);
}

Ao chamar este método, você deve fornecer argumentos compatíveis. Os valores dos argumentos são atribuídos aos parâmetros com base em sua posição:

public class Program {

    public static void main (String args[]) {

        int a = 6;
        int b = 8;

        // 'a' e 'b' são os argumentos passados na chamada
        sum(a, b);  // Imprime 14

        // O literal '3' e a variável 'a' são os argumentos
        sum(3, a);  // Imprime 9
    }

    static void sum(int x, int y) {
        int z = x + y;
        System.out.println(z);
    }
}

No exemplo, na chamada sum(a, b), o valor da variável a (o primeiro argumento) é copiado para o parâmetro x. O valor de b (o segundo argumento) é copiado para o parâmetro y.

Correspondência de Tipos e Ordem

A assinatura do método define um contrato rígido. O número, o tipo e a ordem dos argumentos em uma chamada devem corresponder exatamente à lista de parâmetros do método.

public class Program {

    public static void main (String args[]) {
        // A chamada respeita a ordem: String primeiro, int depois.
        display("Tom", 34);
    }

    static void display(String name, int age) {
        System.out.println("Name: " + name);
        System.out.println("Age: " + age);
    }
}

Uma chamada como display(34, "Tom") resultaria em um erro de compilação, pois os tipos dos argumentos não correspondem aos tipos dos parâmetros na ordem esperada.

Parâmetros de Comprimento Variável (Varargs)

Para cenários onde um método precisa aceitar um número flexível de argumentos de um mesmo tipo, Java oferece os parâmetros de comprimento variável (varargs). A sintaxe utiliza uma reticência ... após o tipo do parâmetro.

public class Program {

    public static void main (String args[]){
        sum(1, 2, 3);           // 3 argumentos. Imprime 6
        sum(1, 2, 3, 4, 5);     // 5 argumentos. Imprime 15
        sum();                  // 0 argumentos. Imprime 0
    }

    // 'numbers' é um parâmetro varargs
    static void sum(int... numbers) {
        int result = 0;
        // Internamente, 'numbers' é tratado como um array de int (int[])
        for(int n : numbers) {
            result += n;
        }
        System.out.println(result);
    }
}

Internamente, o compilador Java trata um parâmetro varargs como um array. Isso permite que o método sum seja chamado com qualquer quantidade de argumentos do tipo int, incluindo nenhum.

Regra Essencial: Varargs Sempre por Último

Se um método possui múltiplos parâmetros, o parâmetro varargs deve ser obrigatoriamente o último da lista. Isso evita ambiguidades para o compilador.

public static void main(String[] args) {
    printSum("Soma:", 20, 10, 30); // "Soma:" vai para 'message', o resto para 'numbers'
    printSum("Olá, Mundo!");        // "Olá, Mundo!" vai para 'message', 'numbers' fica vazio
}

static void printSum(String message, int... numbers){
    System.out.println(message);
    int result = 0;
    for(int x : numbers) {
        result += x;
    }
    System.out.println(result);
}

📝 Exercícios

Tarefa 1

Complete o método min abaixo para que ele retorne o menor de dois números inteiros, a e b.

public class Comparator {
    public static void main(String[] args) {
        // A linha abaixo deve imprimir: O menor valor é 5
        System.out.println("O menor valor é " + min(10, 5));
    }

    // Complete este método
    static int min(int a, int b) {
        // seu código aqui
    }
}
Resposta
public class Comparator {
    public static void main(String[] args) {
        // A linha abaixo deve imprimir: O menor valor é 5
        System.out.println("O menor valor é " + min(10, 5));
    }

    // Complete este método
    static int min(int a, int b) {
        return (a < b) ? a : b;
    }
}

Tarefa 2

Complete o método printAllNames para que ele receba um número variável de nomes (String) e imprima cada um em uma nova linha.

public class NamePrinter {
    public static void main(String[] args) {
        // A chamada abaixo deve imprimir:
        // Ana
        // Carlos
        // Beatriz
        printAllNames("Ana", "Carlos", "Beatriz");
    }

    // Complete este método usando varargs
    static void printAllNames(String... names) {
        // seu código aqui
    }
}
Resposta
public class NamePrinter {
    public static void main(String[] args) {
        // A chamada abaixo deve imprimir:
        // Ana
        // Carlos
        // Beatriz
        printAllNames("Ana", "Carlos", "Beatriz");
    }

    // Complete este método usando varargs
    static void printAllNames(String... names) {
        for (String name : names) {
            System.out.println(name);
        }
    }
}
Política de Privacidade

Copyright © www.programicio.com Todos os direitos reservados

É proibida a reprodução do conteúdo desta página sem autorização prévia do autor.

Contato: programicio@gmail.com