This is a pretty good example scenario to examine. Basically you are arguing Array of Structs VS Struct of Arrays. Though you may be right about performance, you shouldn't, in general, second guess the JIT. Java has jmh which is a specialized performance test harness which you would test a theory like that.
In your second example,
for (size_t i = 0; i < count; ++i)
positions[i] += velocities[i] * dt;
It is known that if positions and velocities are member variables of some (Struct of Arrays) object, that in this case performance will be poor because, as I mentioned, unless the JIT can defacto prove no other thread can access those arrays (which it's not designed to because of time constraints) it's forced to do null checks on both those arrays each access. There's other reflection issues in Java why these arrays can't be trusted but they are working on that also.
Java architects mostly solved this issue with enhance-for which you used in your first example but can't be used in this Struct of Arrays style programming because it's only acting on one array at a time.
The correct way to do the second example in Struct of Arrays is assign to a local variable (which no other thread can access)
float[] pos = this.positions;
float[] vel = this.velocites;
for (int i = 0; i < pos.length; i++)
pos[i] = vel[i] * dt;
Personally I like arrays in Java and think Struct of Arrays is a valid structure... for hot code. But it's not the norm. It's the opposite of declarative. The java mentality is "do the declarative, java will eventually match performance down the road" and that has been proven correct just in the last five releases and just regarding array performance in general.