Arrays são variáveis ou objetos?

Fala Galera, beleza?
Na criação de arrays com o propósito de ter variáveis indexadas,a duvida é:

Se uso um new para criar uma variável array, estou instanciando a classe Arrays?
Se sim isso me produz uma variável do tipo int ou um objeto Array?
int x[] = new int[5];

Obrigado.

São objetos.
Você identifica um objeto quando:

  • Utiliza a palavra new

    int array[] = new int[5];

  • Ele possui atributos e/ou métodos

    array.length;

  • Não, não tem nada a ver com a classe Arrays. Ela só será instanciada caso você declare formalmente

    Arrays newArray = new Arrays();

Obrigado Darlan,

Perfeito entendo também dessa maneira, mas se quando uso new estou identificando um objeto.
Seria um objeto do tipo int? Porém int não é um tipo primitivo?

Não, ele é um objeto array, embora não seja da classe Arrays.
Veja o javadoc da classe Arrays, ela possui N atributos e métodos além dos que um objeto [] possui.
A mesma coisa com Vector, por exemplo.
Então, vetores são tipos específicos e a forma de declaração/instanciação aceita qualquer coisa, primitivos ou classes.

Quando usamos new int[5] estamos criando um array capaz de armazenar 5 componentes.

O tipo de cada componente é int e o tipo do array em si é int[].

Veja mais detalhes na especificação:
https://docs.oracle.com/javase/specs/jls/se9/html/jls-10.html

Não, é um objeto do tipo int[] (perceba os colchetes que identificam o array).
int é diferente de int[]
que é diferente de int[][]
que é diferente de int[][][]
que é diferente de… você já entendeu. :wink: