I read that the enhanced for loop is more efficient than the normal for loop here:
http://developer.android.com/guide/practices/performance.html#fo
From Effective Java :
The standard idiom for looping through an array doesn’t necessarily result in redundant checks. Modern JVM implementations optimize them away.
But Josh Bloch doesn't describe how JVM optimizes them.