Corrija o erro: tipos de valor e tipos de referência

Crie um método que retorne true se dois arrays contiverem valores idênticos e false caso contrário.

Para resolver este exercício, seu amigo escreve o seguinte código:

public static boolean checkEquals(int[] first, int[] second) {
    return first == second;
}

Mas, ao testar o código, você percebe que algo não está certo. Ao executá-lo, obtém os seguintes resultados:

Program.checkEquals(new int[]{1, 2}, new int[]{1, 3}) ➞ false
// Até aqui, tudo bem...

Program.checkEquals(new int[]{1, 2}, new int[]{1, 2}) ➞ false
// Ops! O que aconteceu?

Reescreva o código do seu amigo para que ele verifique corretamente se dois arrays são iguais. Para serem iguais, os arrays devem ter os mesmos elementos na mesma ordem. Os testes abaixo devem passar:

Exemplos

Program.checkEquals(new int[]{1, 2}, new int[]{1, 3}) ➞ false

Program.checkEquals(new int[]{1, 2}, new int[]{1, 2}) ➞ true

Program.checkEquals(new int[]{4, 5, 6}, new int[]{4, 5, 6}) ➞ true

Program.checkEquals(new int[]{4, 7, 6}, new int[]{4, 5, 6}) ➞ false

Notas

Dica: Isso tem a ver com a diferença entre valor e tipos de referência.