Arrays are special in Java, they are a bit twisted because of performance reasons, the same as having primitive types which are not 100% OO. sometimes you need to compromise between two things, OO and performance.
Take another example far from java, in theory a DB must be normalized however in real life sometimes you have to ignore normalization for performance reasons.