在程序开发中for可以说是一个非常非常常出现的东西,特别是在数组里面处理的时候,来看一下for的简单用法

for与for each

我们在使用for时来一个非常常见的代码段

//as3.0

for(var i:uint=0;i

{

trace("i:"i);

}

//java

for(int i=0;i

{

System.out.println("i:"i);

}

在写这里时我们都会说这个用起来很简单嘛,也没什么问题嘛,还讲个屁啊

下面我们来看一个很容易引发的一个错误

来看一段代码

ArrayList arr=new ArrayList ();

arr.add(1);

arr.add(2);

arr.add(3);

arr.add(4);

arr.add(5);

arr.add(6);

arr.add(7);

for(int i=0;i

{

System.out.println(arr[i]);

if(i==4)

arr.remove(i);

}

大家看一下这个我们能打印出数组的全部数据吗?

可以吃过亏的就知道这里我们一不小心就改了数组的长度,会导致我们遍历的时候跳过了某个元素。

大家仔细看一下这个遍历过程就能发现问题

这个问题的解决办法也很好解决只要把遍历反过来写就能避免有某些元素遍历不到的情况

ArrayList arr=new ArrayList ();

arr.add(1);

arr.add(2);

arr.add(3);

arr.add(4);

arr.add(5);

arr.add(6);

arr.add(7);

for(int i=arr.lenght-1;i>=0;i--)

{

System.out.println(arr[i]);

if(i==4)

arr.remove(i);

}

可能还有同学会想到用增强的 for循环,这个可以保证遍历所有的元素,而且经过我的测试 这个增强的 for循环不让我们在循环里动态改变这个数组的大小,所以也可以解决这个问题

如果 我们强硬去改变它就会报一个java.util.ConcurrentModificationException的异常错误出来

最近在as3.0遇到了一个更神奇的问题,就是这个东西这个增强for循环支持动态的改变正在遍历的数组长度,出现的问题就是上面的

下面我们来过一下这个错误

代码:

//as3.0

var arr:Array = [1,2,3,4,5] ;

for each (var i:int in arr)

{

trace(i);

if(i==3)

arr.splice(arr.indexOf(1),1);

}

运行结果可想而知:

1

2

3

5

这个跳了一下。没有遍历到全部元素,所以这个要小心了。也可见这个增强for在as3.0里用得是多么的不好。

as3调用java_java与as3.0中for each使用的小陷阱相关推荐

  1. xlnx4.0中关于SPI-nor-flash的一个小bug

    最经搞关于zynq7000,用到了petalinux,其中用的内核版本为xlnx4.0.再处理nandflash问题是,发现如下问题,阅读关于与扩展地址操作的原代码,从纸面上看应该属于一个小bug.原 ...

  2. 如何在mysql8.0中导入导出数据库

    作为一个准备开始好好学习代码的小菜鸟,第一步就是借鉴. 借鉴别人代码的时候,会出现一个令很多男女面红耳燥的羞羞的问题,不会导入数据库文件(youaremybaby.sql),这是我在mysql8.0中 ...

  3. as3.0中如何阻止事件冒泡?

    as3.0中的事件冒泡机制有时候会很烦人,比如一个Sprite(方便下文描述就命名为Container吧)把另一外Sprite(称为Child吧)做为子元素套进来以后,如果两个Sprite都注册了Mo ...

  4. AS3.0中的显示编程(五)-- Loader(加载器)

    Loader类是一个显示容器,可用来加载SWF文件或图像(JPG.GIF.PNG),被加载的显示对象将做为Loader对象的子级添加.使用Loader类时,不可避免的要注意安全模型.但这块内容我会集中 ...

  5. AS3.0中is,as运算符

    AS3.0中is,as运算符 (1) is运算符 在AS3.0新增加的is运算符,主要功能是判断一个变量或者等式是不是等于给定的数据类型,在以前的版本中,有instanceof来实现相同的功能.但是i ...

  6. 转:As3.0中的反射

    常见的笔试题,所以把它转下来收藏. 给你一个代码代表"类"完整路径的字符串,比如"flash.text.TextField",你能用AS3.0在舞台上动态创建一 ...

  7. AS3 --调用Js

    AS3调用Js的方法,ExternalInterface.call("error1"),Js方法"error1"可以返回任何数据. eg. var b:* = ...

  8. Ajax 1.0 中使用web控件调用后台方法的用法.

    今天在做页面文本框审核的时候发现个Ajax 1.0 中使用web控件调用后台方法的一个不爽的地方. 把该调用方法发上来供大家参考. 首先我们创建一个MasterPage.master文件. 在页面上放 ...

  9. .NET2.0中,Winform程序如何异步调用Web Service呢?[Demo下载]——与.net1.1环境下比较...

    最近在MSDN上看到一个在.NET1.1中Winform程序异步调用WebService的例子 我准备模仿着迁移到.NET2.0环境中,遗憾的是,一切不是那么简单. 首先,.net1.1中调用的Web ...

最新文章

  1. 小甲鱼c++学习视频之运算符重载
  2. jeasyUI的treegrid批量删除多行
  3. 消控中心人员配置_关于2018年度环创中心楼宇物业综合管理考评情况的通报
  4. java file的相对路径_JAVA File的建立及相对路径绝对路径
  5. 【MyBatis框架】mapper配置文件-关于动态sql
  6. (转)全文检索技术学习(三)——Lucene支持中文分词
  7. BZOJ 1024: [SCOI2009]生日快乐
  8. spring boot redis分布式锁
  9. java常见抛出异常
  10. 乐高机器人巡线C语言程序,乐高机器人巡线原理
  11. Android中常用的adb shell命令
  12. Flutter中使用device_info获取设备信息
  13. VUE3.X——获取dom元素
  14. 使用MATLAB的residue()命令求传递函数的展开式
  15. python如何输出结果至剪贴板_将“print”的输出直接复制到剪贴板
  16. 不同尺寸的手机屏幕其需要图片的分辨率和尺寸
  17. 【10639 Hello Kitty】
  18. 2017鸡年女宝宝名字大全,来给你的女宝宝找个好名字
  19. linux查看各类文件系统信息
  20. LeetCode49:字母异位词分组,java实现

热门文章

  1. Solr删除managedschema
  2. 利用python语言实现帧差法,python+opencv实现帧差法
  3. Altium AD20如何选择重叠在下方的元件?如何对元件快速选择、选择区域内部、选择矩形接触到的对象
  4. 理解Java多线程高并发Executor框架的使用
  5. markdown编辑数学公式
  6. Caused by: java.lang.IllegalArgumentException: Result Maps collection does not contain value for...
  7. 洛谷1551 亲戚
  8. TWaver初学实战——基于HTML5的交互式地铁图
  9. 指定复制的数据库或者表
  10. C/C++ 实现文件透明加解密