本章咱们聊聊简单的for-each循环:看完这章,写个test代码,以后写for-each循环应该就是探囊取物,胸有成竹。
for-each循环基本语法
for(元素类型 元素变量 : 数组名)
{
//操作语句
}
简单说几句:
for-each循环是for循环的简化版本,那么换汤不换药;这个语法格式怎么理解?好说好说:
for()
是进行循环操作,操作肯定要有循环的东西——现在我们暂时针对数组(主要是作者才疏学浅)
我们操作的整体是一个数组,在c里面,传数组名,意味着传首元素的地址——就是让for-each找到这个要进行操作的数组。
for( ... ... 数组名)
而循环的核心是什么?便是贯穿始终的 i (循环变量)。但是for-each循环是把循环变量和数组元素结合起来,使数组元素成为循环变量。数组元素 :必须有类型。循环变量 :必须有一个响当当的名字
然后就有了:
for(元素类型 元素名 : 数组名)俩部分再用分号隔开
test代码:
光学不练,一切知识如过眼云烟:我们实际操作一把
一维数组test
package forEach;
public class Foreach
{
public static void main(String[] args)
{
String[] testcode = {"Panda","loves","bamboo"};//创建一个String(字符串)类型数组并初始化
for(String ele : testcode)//String类型的元素,循环变量即每一个数组里的元素,都叫ele : 把要遍历的数组名传过去,找到这个数组
{
System.out.printf("%s ",ele);//打印这个每个元素
}
System.out.printf("\n");//一维数组测试
}
}
效果:
不错不错,二维数组也试试:
二维数组test
package forEach;
public class Foreach
{
public static void main(String[] args)
{
String[][] test2 = {{"Monkey loves bananas"},{"Dog loves bones"},{"Cat loves fish"}};
for(String[] ele : test2)//二维数组的每一个元素都是一维数组,所以String[]
{
System.out.printf("%s\n",ele);
}//二维数组测试
}
}
效果:
加组验证:
for - each循环赋值能否改变数组元素
验证在for-each循环里面能否改变数组的值(常量字符串的元素本身也不能改变)
package forEach;
public class Foreach
{
public static void main(String[] args)
{
int[] ints = {1,2,3,4};
for(int eleint : ints)
{
eleint += 4;//每个元素都加上4
System.out.printf("%d ",eleint);//输出
}
System.out.printf("\n");//俩组打印结果换行
for(int ele : ints)
{
System.out.printf("%d ",ele);//输出
}
//验证在for-each循环里面能否改变各个元素的值
}
猜猜两组打印结果:
可见,在for-each循环里面,我们虽然是传了个地址,但是对对数组操作的时候,我们还复制了一份数组的元素内容。我们是对复印件操作,而原来的数组就是原件 ,没有变化。
至于补充的知识:
for-each我们自己也发现,起点是数组首元素,终点是数组最后一个元素。我们在写循环,似乎不用关心起点和终点,并且默认一次只遍历一个元素。
小总结:for-each循环对于简单的遍历操作可谓是省心省力,不过至于赋值和按需求检索元素则另寻for循环解决
for-each循环,over...