ActionScript3.0学习之路(3)——简单数据类型

下面谈一下ActionScript3.0的简单数据类型,一共有五种,分别是Number、int、uint、Boolean、String,其中Number、int、uint统称为数值型。

 

int型没啥好说的,和其他语言里面一样,uint也不过是只取0和正整数而已,范围大小并无不同。

 

比较诡异的是Number型,似乎包含了其他语言里面的浮点型、整型、长整型等等,似乎用它就可以代表所有的数值,但是所有数值杂合在一起的后果就是计算起来不方便,纯整型的计算没有了,我在想是不是因为设计者发现了不妥之处才加了int和uint两个类型,ActionScript3.0里面的整数字面量就是Number型的,个人认为可以大部分时候简单地把Number型看成浮点型就好,其他例如时间毫秒这种可能需要利用Number型包括长整型的特性(有一次用int就吃了亏,找了半天原因),一般来说,把Number型强制转换成int是家常便换,感觉很纠结,远不如byte、short、int、long、float、double分开用得爽啊。

 

至于Boolean型还是老样子,true和false。

 

最后说一下String,由于大家都知道它是不变量,没有什么引用类型的特征,个人认为划到基本类型更好,Java里面是因为基本类型都是值类型,不是面向对象的设计,只能把String归为引用类型了。

 

声明变量的方式是:var 变量名:变量类型,看起来奇奇怪怪的,不过也有一定道理,var不是表示变量么?把var关键字换成const就变成了声明常量。当然,这不是特点,特点是变量类型可以不指定,或者指定为*、Object(注:不指定和指定为*效果一样),*和Object的区别是什么呢?*是明确的表示类型不指定,Object表示所有的类型,*标识的变量值可以是undefined,但Object标识的变量值若赋为undefined则自动转换为其默认值null。

 

再来说一下各类型的默认值,int和uint都是0,Number是NaN(Javascript特点,判断当然也要用isNaN()方法),Boolean是false,String是null(这点看来,String本质还是引用类型啊)。与其他语言不同的是,不仅是属性,连局部变量编译器也会给你初始化,不用你自己操心,这些我在上一篇已经讨论过了,不再赘述。

 

ActionScript3.0 有一个特点,每个简单类型都对应一个包装类,是自动对应,不需要装拆箱的,所以我们可以对简单类型调用方法,比如(3.14).toString(),虽然看起来挺别扭的,同时变量初始化也可以用new关键字,像类实例化一样,但是本质上和直接赋值初始化无区别,仍然是值类型,不是引用类型,效率上也不会有任何差别,纯属写法不同。

 

关于类型转换,每个简单类型都对应一个全局方法用来转型,调用形式是:类型名称(变量),简单类型有可能变成不可预测结果,我们必须尽量小心。下面是一些原则,可以参考:

 

转换为Number类型:

 

当变量为Boolean类型时,若为true,转换为1,若为false,转换为0。

 

当变量为int或uint类型时,转换的值是其本身。

 

当变量为String类型时,若为纯数字字符,直接转换(若为十六进制,会转换成十进制),若为空字符串,转换为0,否则,转换为NaN。

 

若为NaN,转换为NaN;若为undefined,转换为NaN;若为null,转换为0。

 

转换为int类型:

 

当变量为Boolean类型时,若为true,转换为1,若为false,转换为0。

 

当变量为Number类型时,取其整数部分。

 

当变量为uint类型时,转换的值是其本身。

 

当变量为String类型时,若String为纯数字字符,直接转换(若为十六进制,会转换成十进制),否则,转换为0。

 

若为NaN,转换为0;若为undefined,转换为0;若为null,转换为0。

 

转换为uint类型:

 

和转换为int类型一致,但一切转换结果为负数的都会溢出,要注意。

 

转换为Boolean类型:

 

当变量为Number、int或uint类型时,若为0,转换为false,否则,转换为true。

 

当变量为String类型时,若为空字符串,转换为false,否则,转换为true。

 

若为NaN,转换为false;若为undefined,转换为false;若为null,转换为false。

 

转换为String类型:

 

当变量为Number、int或uint类型时,若为十六进制,转换为十进制字符串,其他值都是直接按字面值转换。

 

关于简单数据类型,大概就是这么多了。

你可能感兴趣的:(Flash,actionscript,string,object,null,javascript,语言)