Por que o array eh tratado como objeto em java?

Gostaria de saber um pouco mais sobre objetos Java, o que são eles?
Por que eu devo declarar um array como um objeto?

Olá,

A manipulação direta de ponteiros, embora poderosa, é perigosíssima. Ela traz consigo a possibilidade de travar a própria CPU, e com ela todas as aplicações da máquina. C++ traz construtores e destrutores de objetos para abstrair um pouco as coisas. Java tirou os destrutores das mãos dos programadores :cry: e passou para um robô interno, o coletor de lixo (GC).

Os arrays existem em dois sabores: arrays de tipos básicos e arrays de objetos. Em C++ os dados ‘arranjados’ eram disponíveis na memória RAM bruta. Em java os dados dos arrays de tipo básicos são acessados através de uma ‘cabeça’, que esconde o acesso direto. essa cabeça, para ficar compatível com o GC é ela própria um Object Java.

Os arrays de objetos são arrays para um tipo básico especial: ponteiros de baixo nível para outros objetos (ou outras ‘cabeças’ de arrays).

Por isso, quando trabalhando com código de altíssima eficiência, como no caso de rotinas gráficas, tem que se ter em mente que um array múltiplo em Java é muito menos eficiente que um array múltiplo em C++, que de fato é uma sucessão simples de bytes.

String [][] é na verdade um array de arrays, ou array de cabeças, em Java, enquanto que em C++ é uma referência à área contendo os dados.