數(shù)據(jù)類型的說明
基元數(shù)據(jù)類型包括 Boolean、int、Null、Number、String、uint 以及 void。
ActionScript
3.0核心類還有下列復(fù)雜數(shù)據(jù)類型:Object、Array、Date、Error、Function、RegExp、XML 以及 XMLList。
常用數(shù)據(jù)類型介紹:
Boolean 數(shù)據(jù)類型
Boolean 數(shù)據(jù)類型包含兩個(gè)值:true 和 false?;蛘呤? 和1 ,對于 Boolean
類型的變量,其它任何值都是無效的。已經(jīng)聲明但尚未初始化的布爾變量的默認(rèn)值是 false。
int 數(shù)據(jù)類型
int 數(shù)據(jù)類型在內(nèi)部存儲(chǔ)為 32 位整數(shù),它包含一組介于 -2,147,483,648 (-231) 和 2,147,483,647 (231
- 1) 之間的整數(shù)(包括 -2,147,483,648 和 2,147,483,647)。早期的 ActionScript 版本僅提供
Number 數(shù)據(jù)類型,該數(shù)據(jù)類型既可用于整數(shù)又可用于浮點(diǎn)數(shù)。在 ActionScript 3.0 中,現(xiàn)在可以訪問 32
位帶符號整數(shù)和無符號整數(shù)的低位機(jī)器類型。如果您的變量將不會(huì)使用浮點(diǎn)數(shù),那么,如果某變量永遠(yuǎn)是正整數(shù),那么該變量使用 int 數(shù)據(jù)類型來代替
Number 數(shù)據(jù)類型應(yīng)會(huì)更快更高效。
對于小于 int 的最小值或大于 int 的最大值的整數(shù)值,應(yīng)使用 Number 數(shù)據(jù)類型。Number 數(shù)據(jù)類型可以處理
-9,007,199,254,740,992 和 9,007,199,254,740,992(53 位整數(shù)值)之間的值。int
數(shù)據(jù)類型的變量的默認(rèn)值是 0。
Null 數(shù)據(jù)類型
Null 數(shù)據(jù)類型僅包含一個(gè)值:null。這是 String 數(shù)據(jù)類型和用來定義復(fù)雜數(shù)據(jù)類型的所有類(包括 Object
類)的默認(rèn)值。其它基元數(shù)據(jù)類型(如 Boolean、Number、int 和 uint)均不包含 null 值。如果您嘗試向
Boolean、Number、int 或 uint 類型的變量賦予 null,則 Flash Player 會(huì)將 null
值轉(zhuǎn)換為相應(yīng)的默認(rèn)值。不能將 Null 數(shù)據(jù)類型用作類型注釋。
Number 數(shù)據(jù)類型
在 ActionScript 3.0 中,Number
數(shù)據(jù)類型可以表示整數(shù)、無符號整數(shù)和浮點(diǎn)數(shù)。但是,為了盡可能提高性能,應(yīng)將 Number 數(shù)據(jù)類型僅用于浮點(diǎn)數(shù),或者用于 int 和 uint
類型可以存儲(chǔ)的、大于 32 位的整數(shù)值。要存儲(chǔ)浮點(diǎn)數(shù),數(shù)字中應(yīng)包括一個(gè)小數(shù)點(diǎn)。如果您省略了小數(shù)點(diǎn),數(shù)字將存儲(chǔ)為整數(shù)。
Number 數(shù)據(jù)類型使用由 IEEE 二進(jìn)制浮點(diǎn)算術(shù)標(biāo)準(zhǔn) (IEEE-754) 指定的 64 位雙精度格式。此標(biāo)準(zhǔn)規(guī)定如何使用 64
個(gè)可用位來存儲(chǔ)浮點(diǎn)數(shù)。其中的 1 位用來指定數(shù)字是正數(shù)還是負(fù)數(shù)。11 位用于指數(shù),它以二進(jìn)制的形式存儲(chǔ)。其余的 52
位用于存儲(chǔ)"有效位數(shù)"(又稱為"尾數(shù)"),有效位數(shù)是 2 的 N 次冪,N 即前面所提到的指數(shù)。
可以將 Number 數(shù)據(jù)類型的所有位都用于有效位數(shù),也可以將 Number
數(shù)據(jù)類型的某些位用于存儲(chǔ)指數(shù),后者可存儲(chǔ)的浮點(diǎn)數(shù)比前者大得多。例如,如果 Number 數(shù)據(jù)類型使用全部 64
位來存儲(chǔ)有效位數(shù),則它可以存儲(chǔ)的最大數(shù)字為 265 - 1。如果使用其中的 11 位來存儲(chǔ)指數(shù),則 Number
數(shù)據(jù)類型可以存儲(chǔ)的最大有效數(shù)字為 21023。
Number 類型可以表示的最小值和最大值存儲(chǔ)在 Number 類的名為 Number.MAX_VALUE 和
Number.MIN_VALUE 的靜態(tài)屬性中。
Number.MAX_VALUE == 1.79769313486231e+308
Number.MIN_VALUE == 4.940656458412467e-324
盡管這個(gè)數(shù)字范圍很大,但代價(jià)是此范圍的精度有 所降低。Number 數(shù)據(jù)類型使用 52 位來存儲(chǔ)有效位數(shù),因此,那些要求用 52
位以上的位數(shù)才能精確表示的數(shù)字(如分?jǐn)?shù)
1/3)將只是近似值。如果應(yīng)用程序要求小數(shù)達(dá)到絕對精度,則需要使用實(shí)現(xiàn)小數(shù)浮點(diǎn)算術(shù)(而非二進(jìn)制浮點(diǎn)算術(shù))的軟件。
如果用 Number 數(shù)據(jù)類型來存儲(chǔ)整數(shù)值,則僅使用 52 位有效位數(shù)。Number 數(shù)據(jù)類型使用 52 位和一個(gè)特殊的隱藏位來表示介于
-9,007,199,254,740,992 (-253) 和 9,007,199,254,740,992 (253) 之間的整數(shù)。
Flash Player 不但將 NaN 值用作 Number
類型的變量的默認(rèn)值,而且還將其用作應(yīng)返回?cái)?shù)字、卻沒有返回?cái)?shù)字的任何運(yùn)算的結(jié)果。例如,如果您嘗試計(jì)算負(fù)數(shù)的平方根,結(jié)果將是 NaN。其它特殊的
Number 值包括"正無窮大"和"負(fù)無窮大"。
注意
在被 0 除時(shí),如果被除數(shù)也是 0,則結(jié)果只有一個(gè),那 就是 NaN。在被 0
除時(shí),如果被除數(shù)是正數(shù),則結(jié)果為正無窮大;如果被除數(shù)是負(fù)數(shù),則結(jié)果為負(fù)無窮大。
String 數(shù)據(jù)類型
String 數(shù)據(jù)類型表示一個(gè) 16 位字符的序列。字符串在內(nèi)部存儲(chǔ)為 Unicode 字符,并使用 UTF-16
格式。字符串是不可改變的值,就像在 Java 編程語言中一樣。對字符串值執(zhí)行運(yùn)算會(huì)返回字符串的一個(gè)新實(shí)例。用 String
數(shù)據(jù)類型聲明的變量的默認(rèn)值是 null。雖然 null 值與空字符串 ("") 均表示沒有任何字符,但二者并不相同。
uint 數(shù)據(jù)類型
uint 數(shù)據(jù)類型在內(nèi)部存儲(chǔ)為 32 位無符號整數(shù),它包含 一組介于 0 和 4,294,967,295 (232- 1)
之間的整數(shù)(包括 0 和 4,294,967,295)。uint 數(shù)據(jù)類型可用于要求非負(fù)整數(shù)的特殊情形。例如,必須使用 uint
數(shù)據(jù)類型來表示像素顏色值,因?yàn)?int 數(shù)據(jù)類型有一個(gè)內(nèi)部符號位,該符號位并不適合處理顏色值。對于大于 uint 的最大值的整數(shù)值,應(yīng)使用
Number 數(shù)據(jù)類型,該數(shù)據(jù)類型可以處理 53 位整數(shù)值。uint 數(shù)據(jù)類型的變量的默認(rèn)值是 0。
void 數(shù)據(jù)類型
void 數(shù)據(jù)類型僅包含一個(gè)值:undefined。在早期的 ActionScript 版本中,undefined 是 Object
類實(shí)例的默認(rèn)值。在 ActionScript 3.0 中,Object
實(shí)例的默認(rèn)值是 null。如果您嘗試將值 undefined 賦予 Object 類的實(shí)例,F(xiàn)lash Player 會(huì)將該值轉(zhuǎn)換為
null。您只能為無類型變量賦予 undefined 這一值。無類型變量是指缺乏類型注釋或者使用星號 (*) 作為類型注釋的變量。只能將
void 用作返回類型注釋。
Object 數(shù)據(jù)類型
Object 數(shù)據(jù)類型是由 Object 類定義的。Object 類用作 ActionScript 中的所有類定義的基類。ActionScript 3.0 中的 Object
數(shù)據(jù)類型與早期版本中的 Object 數(shù)據(jù)類型存在以下三方面的區(qū)別:第一,Object
數(shù)據(jù)類型不再是指定給沒有類型注釋的變量的默認(rèn)數(shù)據(jù)類型。第二,Object 數(shù)據(jù)類型不再包括 undefined 這一值,該值以前是 Object
實(shí)例的默認(rèn)值。第三,在 ActionScript 3.0 中,Object
類實(shí)例的默認(rèn)值是 null。
在早期的 ActionScript 版本中,會(huì)自動(dòng)為沒有類型注釋的變量賦予 Object 數(shù)據(jù)類型。ActionScript 3.0
現(xiàn)在包括真正無類型變量這一概念,因此不再為沒有類型注釋的變量賦予 Object
數(shù)據(jù)類型。沒有類型注釋的變量現(xiàn)在被視為無類型變量。如果您希望向代碼的讀者清楚地表明您是故意將變量保留為無類型,可以使用新的星號 (*)
表示類型注釋,這與省略類型注釋等效。下面的示例顯示兩條等效的語句,兩者都聲明一個(gè)無類型變量 x:
var x
var x:*
只有無類型變量才能保存值 undefined。如果您嘗試將值 undefined 賦給具有數(shù)據(jù)類型的變量,F(xiàn)lash Player 會(huì)將該值
undefined 轉(zhuǎn)換為該數(shù)據(jù)類型的默認(rèn)值。對于 Object 數(shù)據(jù)類型的實(shí)例,默認(rèn)值是 null,這意味著,如果嘗試將 undefined
賦給 Object 實(shí)例,F(xiàn)lash Player 會(huì)將值 undefined 轉(zhuǎn)換為 null。
|