新手自学java遇到的小疑点(2),求高手解答

新手自学java遇到的小问题(2),求高手解答。
看到了C和C++中没有的“foreach”语句,就实验了一下。

for (variable : collection) statement

结果无意中发现它的两个参数(第一个是数组中元素的类型,第二个是数组对象)中的第一个参数必须在括号中声明,
如果在外部声明,而括号中直接使用的话就会在第一个参数上报错:variable cannot be resolved to a type
并且在第二个参数上报错:Type mismatch: cannot convert from element type int to variable

这让我比较费解,for语句中的初始化、检查、更新参数都可以在语句外部声明,为什么这个很类似for语句的“foreach”语句不能这么定义,应该怎么理解这个语句呢?

------解决方案--------------------
懂得啦你说的意思 但是我回答不上来 给你顶顶
------解决方案--------------------
你的意思大概是
Java code

int[] a={3,4,5};
for(int i:a){
   System.out.println(i);
}

------解决方案--------------------
没有规定foreach一定要遍历所有的元素,中途一样可以break
至于能否用外部变量,这些属于语法限制,没有什么好纠结的

------解决方案--------------------
foreach 语句为数组或对象集合中的每个元素重复一个嵌入语句组,执行完了后在把控制权交给地下的语句块,而for循环是先判断条件是否成立,然后在执行下面的语句块