Java中for循环的几种用法

  • Post author:
  • Post category:java


参考一些博客整理的资料笔记,以备后续查看。


目录


1 常用的几种方法


1.1 for(; ; )


1.2 Collection for( Iterator i=kindsList.iterator(); i.hasNext(); )


1.3 for( : )


2 防止在循环体里修改循环变量


2.1 禁止重新赋值


2.2 允许修改状态


3 类型相容问题


3.1 使用和 要被遍历的数组 中的元素 相同类型的 循环变量


3.2 使用和 要被遍历的Collection 中的元素 相同类型的循环变量


4 循环变量的类型 可以是要被遍历的对象中的元素的 上级类型


4.1 使用要被遍历的对象中的元素的 上级类型的 循环变量


4.2 使用能和 要被遍历的对象中的元素的类型 自动转换的类型的 循环变量


1 常用的几种方法

1.1 for(; ; )

这个是最常用的方法

// 建立一个数组
int[] data = new int[]{1,2,3,4};
// 开始遍历
for(int i=0;i<data.length;i++){
    int num = data[i];
    System.out.print(num+" ");
}

1.2 Collection for( Iterator i=kindsList.iterator(); i.hasNext(); )

java.util.Collection 是一个 集合接口(集合类的一个顶级接口),它提供了对集合对象进行基本操作的通用接口方法。

Collection接口在Java 类库中有很多具体的实现,Collection接口的意义是为各种具体的集合提供了最大化的统一操作方式。

其中 Iterator 就是这个接口中的一种方法,叫 迭代器。

i.hasNext() 方法返回值是 boolean类型,若为 true 则表示迭代器下一个有值,否则表示迭代完成;

i.next() 返回值是一个 object类型,表示 取出迭代器下一个值并赋值给“=”之前

代码示例

String[] stringData = new String[]{"A","B","C","D"};
Collection stringList = java.util.Arrays.asList(stringData);
// 开始遍历
for(Iterator itr = stringList.iterator();itr.hasNext();){
    Object str = itr.next();
    System.out.print(str+" ");
}

1.3 for( : )

for(int i:a)解释是:先设置一个与 a数组 里的元素相同的变量,这个变量先等于a数组的第一个元素,然后进入循环体,第二次循环就等于a数组的第二个元素,进入循环体,以此类推

代码示例:

// 建立一个数组
int[] data = new int[]{1,2,3,4};
// 开始遍历
for(int i:data){
    System.out.print(i+" ");
}
String[] stringData = new String[]{"A","B","C","D"};
Collection stringList = java.util.Arrays.asList(stringData);
// 开始遍历
for(Object str:stringList){
    System.out.print(str+" ");
}

2 防止在循环体里修改循环变量



2.1 禁止重新赋值

int[] data = new int[]{1,2,3,4};
for(final int i:data){
    i = i/2;  /* 编译时出错 */
}

这只是禁止了对循环变量进行重新赋值。


给循环变量的属性赋值


,或者


调用能让循环变量的内容变化的方法


,是不被禁止的。

2.2 允许修改状态

Random[] randoms = new Random[]{new Random(1),new Random(2),new Random(3)};
for(final Random r:randoms){
    r.setSeed(4); /* 将所有Random对象设成使用相同的种子 */
    System.out.print(r.nextLong()+" "); /* 种子相同,第一个结果也相同 */
}
// 运行结果:-4969378402838085704 -4969378402838085704 -4969378402838085704 

3 类型相容问题



3.1 使用和 要被遍历的数组 中的元素 相同类型的 循环变量

int[] data = new int[]{1,2,3,4};
// 开始遍历
for(int i:data){
    System.out.print(i+" ");
}

3.2 使用和 要被遍历的Collection 中的元素 相同类型的循环变量

Collection<String> stringData = new ArrayList<String>();
stringData.add("A");
stringData.add("B");
stringData.add("C");
stringData.add("D");
for(String str:stringData){
    System.out.print(str+" "); /* 依次输出“A”、“B”、“C”、“D” */
}

4 循环变量的类型 可以是要被遍历的对象中的元素的 上级类型


例如,用 int型 的循环变量来遍历一个 byte[]型 的数组,用 Object型 的循环变量来遍历一个Collection< String>(全部元素都是String的Collection)等

注意,这里说的 元素的类型,是 由要被遍历的对象的决定 的――如果它是一个 Object[]型 的数组,那么元素的类型就是Object,即使里面装的都是String对象也是如此

4.1 使用要被遍历的对象中的元素的 上级类型的 循环变量

String[] stringData = new String[]{"A","B","C","D"};
Collection stringList = java.util.Arrays.asList(stringData);
// 开始遍历
for(Object str:stringList){
    System.out.print(str+" ");
}

4.2 使用能和 要被遍历的对象中的元素的类型 自动转换的类型的 循环变量

一般写法

int[] data = new int[]{1,2,3,4};
for(int i:data){
    System.out.print(i+" ");
}

也可以这么写

int[] data = new int[]{1,2,3,4};
// 开始遍历
for(Integer i :data){
    System.out.print(i+" ");
}



版权声明:本文为qq_39715000原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。