有些写法上的说明写的过于武断,可能有很多不当之处,仅供参考。

 

package ForLoop;

import java.util.ArrayList;
import java.util.Iterator;
import java.util.List; /**
* java中for循环的6种写法
*
* @author Panda.Pan
*
* @创建时间:2014-2-28 上午09:39:13
*/
public class ForLoop { public static void main(String[] args) { List<String> list = new ArrayList<String>();
list.add("sha");
list.add("lie");
list.add("bao"); /**
* 方法一:最普通的不加思考的写法
* <p>
* 优点:较常见,易于理解
* <p>
* 缺点:每次都要计算list.size()
*/
for (int i = 0; i < list.size(); i++) {
System.out.println(list.get(i));
}
/**
* 方法二:数组长度提取出来
* <p>
* 优点:不必每次都计算
* <p>
* 缺点:1、m的作用域不够小,违反了最小作用域原则 2、不能在for循环中操作list的大小,比如除去或新加一个元素
*/
int m = list.size();
for (int i = 0; i < m; i++) {
System.out.println(list.get(i));
}
/**
* 方法三:数组长度提取出来
* <p>
* 优点:1、不必每次都计算 2、所有变量的作用域都遵循了最小范围原则
* <p>
* 缺点:1、m的作用域不够小,违反了最小作用域原则 2、不能在for循环中操作list的大小,比如除去或新加一个元素
*/
for (int i = 0, n = list.size(); i < n; i++) {
System.out.println(list.get(i));
}
/**
* 方法四:采用倒序的写法
* <p>
* 优点:1、不必每次都计算 2、所有变量的作用域都遵循了最小范围原则
* <p>
* 缺点:1、结果的顺序会反 2、看起来不习惯,不易读懂
* <p>
* 适用场合:与显示结果顺序无关的地方:比如保存之前数据的校验
*/
for (int i = list.size() - 1; i >= 0; i--) {
System.out.println(list.get(i));
}
/**
* 方法五:Iterator遍历
* <p>
* 优点:简洁
* <p>
* 缺点:
*/
for (Iterator<String> it = list.iterator(); it.hasNext();) {
System.out.println(it.next());
}
/**
* 方法六:jdk1.5新写法
* <p>
* 优点:简洁结合泛型使用更简洁
* <p>
* 缺点:jdk1.4向下不兼容
*/
for (Object o : list) {
System.out.println(o);
} }
}

 

此外不要在for循环内部声明变量,如:

bad:

for(;;){
Object obj = new Object();
}

good:

Object obj=null;
for(;;){
obj = new Object();
}

java中for循环的6种写法的更多相关文章

  1. java中for循环的几种方式

    比如定义一个数组int a[]={1, 2, 3, 4},下面我们罗列一下遍历这个数组的方法 1 for(;;) 这也是最常用的方法,不多做解释.代码如下 int a[] = {1, 2, 3, 4} ...

  2. Java设计模式之单例模式(七种写法)

    Java设计模式之单例模式(七种写法) 第一种,懒汉式,lazy初始化,线程不安全,多线程中无法工作: public class Singleton { private static Singleto ...

  3. Java中HashMap遍历的两种方式

    Java中HashMap遍历的两种方式 转]Java中HashMap遍历的两种方式原文地址: http://www.javaweb.cc/language/java/032291.shtml 第一种: ...

  4. JAVA中集合输出的四种方式

    在JAVA中Collection输出有四种方式,分别如下: 一) Iterator输出. 该方式适用于Collection的所有子类. public class Hello { public stat ...

  5. t-sql 中between and 的一种写法

    t-sql 中between and 的一种写法: where GETDATE() BETWEEN BeginDateTime AND EndDateTime; BeginDateTime,EndDa ...

  6. java中数组复制的两种方式

    在java中数组复制有两种方式: 一:System.arraycopy(原数组,开始copy的下标,存放copy内容的数组,开始存放的下标,需要copy的长度); 这个方法需要先创建一个空的存放cop ...

  7. Java中创建数组的几种方法

    Java中创建数组的几种方法 public static void main(String[] args) { //创建数组的第一种方法 int[] arr=new int[6]; int intVa ...

  8. Java中关于变量的几种情况

    Java中关于变量的几种情况 1.继承时变量的引用关系 class Animals { int age = 10; void enjoy() { System.out.println("An ...

  9. java 中 IO 流分为几种?(未完成)

    java 中 IO 流分为几种?(未完成)

随机推荐

  1. The largest prime factor(最大质因数)

    1. 问题: The prime factors of 13195 are 5, 7, 13 and 29.What is the largest prime factor of the number ...

  2. c#中的整形类型

    一.整型类型 C#中定义了8中整数类型:字节型(byte).无符号字节型(ubyte).短整型(short).无符号短整型(ushort).整型(int).无 符号整型(uint).长整型(long) ...

  3. LA 3904

    一道DP题: 一共有三种砖,1*2,2*1,2*2,然后要你铺满整个n*2的地板,求不重复的铺法数: 方法: 首先计算了不考虑对称的情况,然后计算只考虑对称的情况: 所以结果就是(不考虑对称数+只考虑 ...

  4. libstdc++.so.5: cannot open shared object file: No such file or directory

    中文分词一般会选择ICTCLAS的模块,虽然不能说很完美,但也算是一个不错的选择.它提供了windows版本和linux版本,并支持C/C#/JNI接口.这本来是一个不错的事情,但版本一多,官方似乎就 ...

  5. AD10 怎样精确导入CAD 文件

    1. 在 AD10 中 PCB 的形状根据实际情况设定,设定的尺寸等信息略.2. CAD 导入的格式要 CAD2004 以下的版本,AutoCAD 文件(*.DXF 或*.DWG)即可. 3. ...

  6. MySQL安装完可以使用,但是找不到对应的系统服务

    为何我用 mysqld 启动 mysql 的服务后,在系统“服务”中查不到mysql服务呢?首先声明,我的服务启动成功了,因为我可以另开一个 cmd 窗口进行mysql登录,登录后可以进行各种操作.用 ...

  7. lc面试准备:Regular Expression Matching

    1 题目 Implement regular expression matching with support for '.' and '*'. '.' Matches any single char ...

  8. 开源网络备份软件 bacula 的安装、配置和运行

    安装bacula 1 bacula的几种网络备份拓扑 前面文章介绍了bacula有5个组成部分,在实际的应用中,没有必要将5个部分分别放在不同的服务器上,它们之间的某些部分是可以合并的,常见的bacu ...

  9. HTML,CSS编码规范

    不管有多少人共同参与同一项目,一定要确保每一行代码都像是同一个人编写的. HTML 语法 对于属性的定义,确保全部使用双引号,绝不要使用单引号. 为每个 HTML 页面的第一行添加标准模式(stand ...

  10. poj3233

    这道题其实算是把快速幂的思想用在多项式之中 A+A^2+A^3+…+A^n=(A+A^1…+A^[n/2])+A^[n/2](A+A+A^1…+A^[n/2])+n mod 2*A^n 然后就是打码的 ...