1.java中方法的形参名字可以取得和成员变量的名字一样,而你查看他的定义时是显示在方法形参上,如aa中的i,在之前看javacore时,说到java的变量没有C++中复杂,在这个例子中看来,C++中局部变量还是适用于java的形参的。
<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute" initialize="App()">
<mx:Script>
<![CDATA[
import mx.controls.Alert;
private var i:int=0;
private function App():void{
aa(i);
i=i++;
Alert.show(i.toString());//输出为0
}
private function aa(i:int):void{
i++;
}
]]>
</mx:Script>
</mx:Application>
2.我把上面的例子改了下,运行时没有输出,因为进入了死循环了,所以一个方法内就再没有什么局部有变量了,方法内同一个变量名只可以定义一次,可以定义的和形参名字一样,但实际上是同一个变量
<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute" initialize="App()">
<mx:Script>
<![CDATA[
import mx.controls.Alert;
private var i:int=0;
private function App():void{
aa(i);
i=i++;
Alert.show(i.toString());
}
private function aa(i:int):void{
i=1; //i为1
for(;i<10;i++)
{
var i:int=0; //相当于i=0;重新给i付值,而不是再定义一个变量i;而这在as3中是没有语法错误的,不知有用idea写会不会报错
}
}
]]>
</mx:Script>
</mx:Application>