Passar um Array a um Método em Java

Mohammad Irfan 12 outubro 2023
  1. Arrays em Java
  2. Métodos em Java
  3. Passar Arrays para métodos em Java
  4. Passar Arrays para um método em Java
  5. Passe um array multidimensional para um método em Java
  6. Entenda como as matrizes são passadas para métodos em Java
  7. Passe um array para um método em Java
Passar um Array a um Método em Java

Este tutorial apresenta como passar um array para um método em Java. Também listamos alguns códigos de exemplo para ajudá-lo a entender o tópico.

Java é uma poderosa linguagem de programação orientada a objetos; é uma linguagem de programação de propósito geral que pode ser usada para vários propósitos. Vamos aprender sobre arrays e métodos em Java e entender como passar um array para um método.

Arrays em Java

Arrays são uma coleção de tamanho fixo do mesmo tipo de dados. Eles são armazenados na memória como blocos contíguos e nos permitem acessar aleatoriamente qualquer elemento do array em um tempo constante.

Esse acesso aleatório é possível porque cada elemento em um array tem um índice dedicado associado a ele. Não precisamos percorrer todo o array para chegar a um elemento específico. Os índices de array começam em 0 e vão para n-1, onde n é o comprimento do array.

As linhas de código a seguir explicam como criar um array e acessar seus elementos.

public class Main {
  public static void main(String[] args) {
    int[] arr; // Declaration
    arr = new int[5]; // Creation
    // Initialization
    arr[0] = 1;
    arr[1] = 3;
    arr[2] = 5;
    arr[3] = 7;
    arr[4] = 9;
    // Accessing Array Elements
    System.out.println("Second Element: " + arr[1]);
    System.out.println("Fourth Element: " + arr[3]);
  }
}

Produção:

Second Element: 3
Fourth Element: 7

Métodos em Java

Um método é definido como um conjunto de instruções que pode ser usado para realizar uma tarefa específica. Eles são usados ​​para aumentar a capacidade de reutilização do nosso código.

Por exemplo, se quisermos encontrar o fatorial de todos os números entre 1 e 10, seria muito melhor definir um método para fatorial e chamar esse método 10 vezes primeiro em vez de reescrever toda a lógica do fatorial 10 tempos diferentes.

Os métodos em Java são muito semelhantes às funções em outras linguagens de programação. A única diferença é que os métodos estão associados a um objeto, enquanto as funções não. Como Java é uma linguagem totalmente orientada a objetos, só temos métodos em Java.

Passar Arrays para métodos em Java

Um método pode ou não ter um conjunto fixo de parâmetros. Um parâmetro pode ser qualquer variável que precisamos usar para definir o corpo do método.

No exemplo de um método fatorial, um parâmetro pode ser o número cujo fatorial precisamos encontrar. Mas e se precisarmos passar um array inteiro para um método?

Na declaração do método, precisamos dizer ao Java que o método deve aceitar um array de um certo tipo de dados para passar um array para um método. Use o tipo de dados do array e colchetes para indicar que o parâmetro é um array.

// Method Declaration
public static void addTen(int[] arr) {
  // Method Body
}

Sempre que o método é chamado, precisamos passar o nome do array para o método. O exemplo a seguir mostra um código completo com um método que aceita um array e chama esse método.

public class Main {
  public static void addTen(int[] arr) // int[] denotes that the parameter is an array
  {
    for (int i = 0; i < arr.length; i++) {
      arr[i] += 10;
    }
  }
  public static void main(String[] args) {
    int[] arr = {1, 3, 5, 7, 9};
    addTen(arr); // Simply pass the name of the array to the method
    for (int i = 0; i < arr.length; i++) {
      System.out.print(arr[i] + " ");
    }
  }
}

Produção:

11 13 15 17 19 

Passar Arrays para um método em Java

Considere outro exemplo em que passamos duas matrizes do mesmo comprimento para um método. O método deve imprimir a soma das duas matrizes.

public class Main {
  public static void addArrays(
      int[] arr1, int[] arr2) // Two arrays are mentioned in the method declaration
  {
    for (int i = 0; i < arr1.length; i++) {
      int sum = arr1[i] + arr2[i];
      System.out.print(sum + " ");
    }
  }
  public static void main(String[] args) {
    int[] arr1 = {1, 2, 3, 4, 5};
    int[] arr2 = {2, 4, 6, 8, 10};
    addArrays(arr1, arr2); // Passing two arrays and calling the method
  }
}

Produção:

3 6 9 12 15

Passe um array multidimensional para um método em Java

Também podemos passar um array multidimensional para um método em Java. Precisamos especificar o tipo de dados dos elementos do array e colchetes de acordo com a dimensão do array.

Considere o exemplo a seguir, onde encontramos a soma de todos os elementos presentes em um array 2-D.

public class Main {
  public static void sum(int[][] arr) {
    int sum = 0;
    for (int i = 0; i < arr.length; i++) {
      for (int j = 0; j < arr[0].length; j++) {
        sum = sum + arr[i][j];
      }
    }
    System.out.print("Sum of all elements is: " + sum);
  }
  public static void main(String[] args) {
    int[][] arr = {{1, 2, 3, 4, 5}, {2, 4, 6, 8, 10}, {1, 3, 5, 7, 9}};
    sum(arr);
  }
}

Produção:

Sum of all elements is: 70

Entenda como as matrizes são passadas para métodos em Java

Vamos dar uma olhada e tentar entender o que acontece nos bastidores quando passamos um parâmetro para um método.

Em Java, os parâmetros são um tipo de passagem por valor. Isso significa que sempre que passamos uma variável para um método, uma cópia do valor dessa variável é passada pelo que o método usa e não pela própria variável original.

Por exemplo, vamos considerar o seguinte caso em que um método aceita um inteiro e adiciona 10 a esse inteiro.

public class Main {
  public static void addTen(int num) {
    num = num + 10;
  }
  public static void main(String[] args) {
    int a = 12;
    addTen(a);
    System.out.print(a);
  }
}

Produção:

12

Qual você acha que será a saída do código acima? O valor do número deve ser incrementado em 10, certo?

O que acontece é que mesmo que o inteiro seja passado para o método, uma cópia do valor inteiro é o que o método realmente recebe. Portanto, todas as alterações são feitas nessa cópia e nenhuma alteração é feita no número inteiro original. No entanto, isso só acontece para tipos de dados primitivos como int.

Este não é o caso dos arrays porque os arrays não são tipos de dados primitivos e são considerados objetos de contêiner que fazem referência a um local de memória na memória heap. Como resultado, eles armazenam o valor de um local da memória e não os dados reais.

Sempre que mudarmos algo naquele local da memória, essa mudança será visível para todos os ponteiros (ou referências) que apontam para aquele local da memória. Lembre-se de que os arrays também são passados ​​por valor em Java, mas esse valor é, na verdade, um local da memória.

Considere o código mencionado acima, onde criamos um método para adicionar 10 a cada elemento de um array.

Passe um array para um método em Java

Freqüentemente, precisamos passar uma coleção do mesmo tipo de dados para um método. Os arrays são mais adequados para essas tarefas e podemos passar um array para o método.

Na declaração do método, precisamos especificar claramente que o método deve aceitar um array do tipo de dados mencionado; isso é feito usando o tipo de dados e colchetes (por exemplo, int[] arrayName).

Ao chamar o método, podemos inserir o nome do array. Neste tutorial, também aprendemos como os métodos tratam os arrays e como o local da memória que armazena os elementos de um array é atualizado.

Artigo relacionado - Java Array

Artigo relacionado - Java Method