Java indeed checks array bounds automatically. This is good and does not have any performance impact.
I know that performance and Java do not always match, but It has to be in Java.
This is true and is not true. Java indeed is compiled to byte code that is then being interpreted. However java has a lot of features that optimize your code including Just in time compiling, so in some tests java runs faster than native code.
And the last point: read about Premature optimization is the root of all evil