java中for循环的6种写法
有些写法上的说明写的过于武断,可能有很多不当之处,仅供参考。
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种写法的更多相关文章
- java中for循环的几种方式
比如定义一个数组int a[]={1, 2, 3, 4},下面我们罗列一下遍历这个数组的方法 1 for(;;) 这也是最常用的方法,不多做解释.代码如下 int a[] = {1, 2, 3, 4} ...
- Java设计模式之单例模式(七种写法)
Java设计模式之单例模式(七种写法) 第一种,懒汉式,lazy初始化,线程不安全,多线程中无法工作: public class Singleton { private static Singleto ...
- Java中HashMap遍历的两种方式
Java中HashMap遍历的两种方式 转]Java中HashMap遍历的两种方式原文地址: http://www.javaweb.cc/language/java/032291.shtml 第一种: ...
- JAVA中集合输出的四种方式
在JAVA中Collection输出有四种方式,分别如下: 一) Iterator输出. 该方式适用于Collection的所有子类. public class Hello { public stat ...
- t-sql 中between and 的一种写法
t-sql 中between and 的一种写法: where GETDATE() BETWEEN BeginDateTime AND EndDateTime; BeginDateTime,EndDa ...
- java中数组复制的两种方式
在java中数组复制有两种方式: 一:System.arraycopy(原数组,开始copy的下标,存放copy内容的数组,开始存放的下标,需要copy的长度); 这个方法需要先创建一个空的存放cop ...
- Java中创建数组的几种方法
Java中创建数组的几种方法 public static void main(String[] args) { //创建数组的第一种方法 int[] arr=new int[6]; int intVa ...
- Java中关于变量的几种情况
Java中关于变量的几种情况 1.继承时变量的引用关系 class Animals { int age = 10; void enjoy() { System.out.println("An ...
- java 中 IO 流分为几种?(未完成)
java 中 IO 流分为几种?(未完成)
随机推荐
- MyEclips:Struts 2 + Hibernate 4 + SQL Server2008
步骤一:准备 1.下载 sqlJDBC.jar的下载地址:http://www.microsoft.com/en-us/download/details.aspx?id=21599 Hibernate ...
- 外包如何安排人手-b
前几天跟一位做人事的朋友聊天,说起软件行业人员问题.朋友的公司是做软件外包的.一个APP项目基本配置6-7个人,每个Android.ios.后台都各配2人以上,但是项目各种超期.各种无法交付.各种客户 ...
- 简单易懂, JUnit 框架问答
本文算是一个关于Junit4相关的知识分享,但是不同于网上大段的源码分析,模式学习文章,我想通过问答的形式,引出代码来简明阐述JUnit4是如何实现需要的功能的. 考虑到任何一个框架,都是为了解决问题 ...
- 转:阿里开源Mysql分布式中间件:Cobar
原文来自于:http://hualong.iteye.com/blog/2102798 这几天研究了下Cobar, Cobar是阿里巴巴研发的关系型数据的分布式处理系统(Amoeba的升级版,该产品成 ...
- python关键字
python有多少关键字? >>> import keyword >>> keyword.kwlist ['and', 'as', 'assert', 'break ...
- Servlet处理Cookie
1.CGI:进程,servlet:线程 2.HttpServletResponse下的方法就没有get开头的,(PrintWriter)getWriter在ServletResponse下. 3.st ...
- 你真的有必要退出吗——再说Android程序的退出功能
转自你真的有必要退出吗--再说Android程序的退出功能 搞Android开发有一段时间了,相信很多从Windows开发过来的Android程序员都习惯性地会跟我一样遇到过同一个问题:如何彻底退出程 ...
- 11个显著提升 ASP.NET 应用程序性能的技巧——第1部分
[编者按]本文出自站外作者 Brij Bhushan Mishra ,Brij 是微软 MVP-ASP.NET/IIS.C# Corner MVP.CodeProject Insider,前 Code ...
- jsp分页技术
1.以下为分页类: import java.io.Serializable; import java.util.List; import org.apache.commons.lang.bui ...
- WIA
一台扫描仪,实际上就是一个Device对象,因此,我们可以通过DeviceManager来“获取”这台设备的“引用”,然后通过得到的Device对象,执行相应的扫描工作.从而跳过了使用ShowAcqu ...