package { import flash.display.Sprite; public class equals extends Sprite{ public function equals(){ // == // 值类型 var a:int=100; var b:int=100; trace(a==b); //true 两边的值相等 trace(a==b+1); //false 两边的值不相等 //引用类型 var arr:Array=[1,2,3]; var arr2:Array=[1,2,3]; trace(arr==arr2); //false 虽然2个对象的内容完全一样 但他们指向不同的引用 var ar:Array=[1,2,3]; var ar2:Array=arr; trace(ar==ar2);//true 引用相等 //Object也是引用类型 //var obj:Object={name:"tigerz"}; //var obj2:Object={name:"tigerz"}; //trace(obj==obj2); //var o:Object={name:"tigerz"}; //var o2:Object=o; //trace(o==o2); trace("--------------------------------"); //=== var arr:Array=["123"]; var i:int=123; trace(arr[0]===i); //false 两边值类型不同 trace(arr[0]==i); //true 自动进行类型转换后值相等 //先将i的值转换为String类型 再进行比较 var str:String = "5"; var num:int = 5; //trace(str ==num); // err //错误的类型比较 类型不兼容无法自动转换 //trace(str=== num); // err //正确的写法 var str:String = "5"; var num:int = 5; //必须使用强制转换 trace(int(str)==num); trace(int(str)=== num); } } }
等于运算符(==) 用来比较等式两边的值是否相等
当等于运算符比较值类型时 仅仅检测两边的值是否相等 如果两边值类型不同自动执行类型转换
当等于运算符比较引用类型(Array Date Object 等等)时检测两边的对象是否指向同一引用
全等运算符(===)
全等运算符(===)和等于运算符(==)的不同在于
全等运算符不执行类型转换 而等于运算符自动执行类型转换
如果使用全等运算符对不同类型的变量进行比较 结果都是fasle