Los arreglos se declaran solamente con su límite súperior dado que el límite ínferior siempre es cero ( 0).
El código
crea un vector de números enteros de longitud 15.
Java comprueba si los accesos a arreglos con índices quedan dentro de los límites permitidos (diferencia a C++ donde no hay una comprobación). Si se detecta un acceso fuera de los límites se produce una excepción IndexOutOfBoundsException.
Arreglos son objetos implícitos que siempre conocen sus propias longitudes ( values.length) (diferencia a C++ donde un arreglo es nada más que un puntero) y que se comportan como clases finales.
No se puede declarar los elementos de un arreglo como constantes (como es posible en C++).