常見Flex數(shù)據(jù)類型用法指導
本文和大家重點討論一下Flex數(shù)據(jù)類型的用法,基元Flex數(shù)據(jù)類型包括Boolean、int、Null、Number、String、uint和void。ActionScript核心類還定義下列復雜的Flex數(shù)據(jù)類型:Object、Array、Date、Error、Function、RegExp、XML和XMLList。
Flex數(shù)據(jù)類型說明
基元數(shù)據(jù)類型包括Boolean、int、Null、Number、String、uint和void。ActionScript核心類還定義下列復雜數(shù)據(jù)類型:Object、Array、Date、Error、Function、RegExp、XML和XMLList。
◆Boolean數(shù)據(jù)類型
Boolean數(shù)據(jù)類型包含兩個值:true和false。對于Boolean類型的變量,其它任何值都是無效的。已經聲明但尚未初始化的布爾變量的默認值是false。
◆int數(shù)據(jù)類型
Flex數(shù)據(jù)類型中int數(shù)據(jù)類型在內部存儲為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ù)又可用于浮點數(shù)。在ActionScript3.0中,現(xiàn)在可以訪問32位帶符號整數(shù)和無符號整數(shù)的低位機器類型。如果您的變量將不會使用浮點數(shù),那么,使用int數(shù)據(jù)類型來代替Number數(shù)據(jù)類型應會更快更高效。
對于小于int的最小值或大于int的***值的整數(shù)值,應使用Number數(shù)據(jù)類型。Number數(shù)據(jù)類型可以處理-9,007,199,254,740,992和9,007,199,254,740,992(53位整數(shù)值)之間的值。int數(shù)據(jù)類型的變量的默認值是0。
◆Null數(shù)據(jù)類型
Flex數(shù)據(jù)類型中Null數(shù)據(jù)類型僅包含一個值:null。這是String數(shù)據(jù)類型和用來定義復雜數(shù)據(jù)類型的所有類(包括Object類)的默認值。其它基元數(shù)據(jù)類型(如Boolean、Number、int和uint)均不包含null值。如果您嘗試向Boolean、Number、int或uint類型的變量賦予null,則FlashPlayer會將null值轉換為相應的默認值。不能將Null數(shù)據(jù)類型用作類型注釋。
◆Number數(shù)據(jù)類型
在ActionScript3.0中,Number數(shù)據(jù)類型可以表示整數(shù)、無符號整數(shù)和浮點數(shù)。但是,為了盡可能提高性能,應將Number數(shù)據(jù)類型僅用于浮點數(shù),或者用于int和uint類型可以存儲的、大于32位的整數(shù)值。要存儲浮點數(shù),數(shù)字中應包括一個小數(shù)點。如果您省略了小數(shù)點,數(shù)字將存儲為整數(shù)。
Number數(shù)據(jù)類型使用由IEEE二進制浮點算術標準(IEEE-754)指定的64位雙精度格式。此標準規(guī)定如何使用64個可用位來存儲浮點數(shù)。其中的1位用來指定數(shù)字是正數(shù)還是負數(shù)。11位用于指數(shù),它以二進制的形式存儲。其余的52位用于存儲"有效位數(shù)"(又稱為"尾數(shù)"),有效位數(shù)是2的N次冪,N即前面所提到的指數(shù)。
可以將Number數(shù)據(jù)類型的所有位都用于有效位數(shù),也可以將Number數(shù)據(jù)類型的某些位用于存儲指數(shù),后者可存儲的浮點數(shù)比前者大得多。例如,如果Number數(shù)據(jù)類型使用全部64位來存儲有效位數(shù),則它可以存儲的***數(shù)字為265-1。如果使用其中的11位來存儲指數(shù),則Number數(shù)據(jù)類型可以存儲的***有效數(shù)字為21023。
Number類型可以表示的最小值和***值存儲在Number類的名為Number.MAX_VALUE和Number.MIN_VALUE的靜態(tài)屬性中。
Number.MAX_VALUE==1.79769313486231e+308Number.MIN_VALUE==4.940656458412467e-324盡管這個數(shù)字范圍很大,但代價是此范圍的精度有所降低。Number數(shù)據(jù)類型使用52位來存儲有效位數(shù),因此,那些要求用52位以上的位數(shù)才能精確表示的數(shù)字(如分數(shù)1/3)將只是近似值。如果應用程序要求小數(shù)達到絕對精度,則需要使用實現(xiàn)小數(shù)浮點算術(而非二進制浮點算術)的軟件。
如果用Number數(shù)據(jù)類型來存儲整數(shù)值,則僅使用52位有效位數(shù)。Number數(shù)據(jù)類型使用52位和一個特殊的隱藏位來表示介于-9,007,199,254,740,992(-253)和9,007,199,254,740,992(253)之間的整數(shù)。
FlashPlayer不但將NaN值用作Number類型的變量的默認值,而且還將其用作應返回數(shù)字、卻沒有返回數(shù)字的任何運算的結果。例如,如果您嘗試計算負數(shù)的平方根,結果將是NaN。其它特殊的Number值包括"正無窮大"和"負無窮大"。
注意
在被0除時,如果被除數(shù)也是0,則結果只有一個,那就是NaN。在被0除時,如果被除數(shù)是正數(shù),則結果為正無窮大;如果被除數(shù)是負數(shù),則結果為負無窮大。
◆String數(shù)據(jù)類型
String數(shù)據(jù)類型表示一個16位字符的序列。字符串在內部存儲為Unicode字符,并使用UTF-16格式。字符串是不可改變的值,就像在Java編程語言中一樣。對字符串值執(zhí)行運算會返回字符串的一個新實例。用String數(shù)據(jù)類型聲明的變量的默認值是null。雖然null值與空字符串("")均表示沒有任何字符,但二者并不相同。
◆uint數(shù)據(jù)類型
uint數(shù)據(jù)類型在內部存儲為32位無符號整數(shù),它包含一組介于0和4,294,967,295(232-1)之間的整數(shù)(包括0和4,294,967,295)。uint數(shù)據(jù)類型可用于要求非負整數(shù)的特殊情形。例如,必須使用uint數(shù)據(jù)類型來表示像素顏色值,因為int數(shù)據(jù)類型有一個內部符號位,該符號位并不適合處理顏色值。對于大于uint的***值的整數(shù)值,應使用Number數(shù)據(jù)類型,該數(shù)據(jù)類型可以處理53位整數(shù)值。uint數(shù)據(jù)類型的變量的默認值是0。
◆void數(shù)據(jù)類型
Flex數(shù)據(jù)類型中void數(shù)據(jù)類型僅包含一個值:undefined。在早期的ActionScript版本中,undefined是Object類實例的默認值。在ActionScript3.0中,Object實例的默認值是null。如果您嘗試將值undefined賦予Object類的實例,F(xiàn)lashPlayer會將該值轉換為null。您只能為無類型變量賦予undefined這一值。無類型變量是指缺乏類型注釋或者使用星號(*)作為類型注釋的變量。只能將void用作返回類型注釋。
◆Object數(shù)據(jù)類型
Object數(shù)據(jù)類型是由Object類定義的。Object類用作ActionScript中的所有類定義的基類。ActionScript3.0中的Object數(shù)據(jù)類型與早期版本中的Object數(shù)據(jù)類型存在以下三方面的區(qū)別:***,Object數(shù)據(jù)類型不再是指定給沒有類型注釋的變量的默認數(shù)據(jù)類型。第二,Object數(shù)據(jù)類型不再包括undefined這一值,該值以前是Object實例的默認值。第三,在ActionScript3.0中,Object類實例的默認值是null。
在早期的ActionScript版本中,會自動為沒有類型注釋的變量賦予Object數(shù)據(jù)類型。ActionScript3.0現(xiàn)在包括真正無類型變量這一概念,因此不再為沒有類型注釋的變量賦予Object數(shù)據(jù)類型。沒有類型注釋的變量現(xiàn)在被視為無類型變量。如果您希望向代碼的讀者清楚地表明您是故意將變量保留為無類型,可以使用新的星號(*)表示類型注釋,這與省略類型注釋等效。下面的示例顯示兩條等效的語句,兩者都聲明一個無類型變量x:
varx
varx:*
只有無類型變量才能保存值undefined。如果您嘗試將值undefined賦給具有數(shù)據(jù)類型的變量,F(xiàn)lashPlayer會將該值undefined轉換為該數(shù)據(jù)類型的默認值。對于Object數(shù)據(jù)類型的實例,默認值是null,這意味著,如果嘗試將undefined賦給Object實例,F(xiàn)lashPlayer會將值undefined轉換為null。
【編輯推薦】
- Flex數(shù)據(jù)庫連接的方法集錦
- FlexBuilder4十大新特性閃亮登場
- Flex框架中Cairngorm和Mate的優(yōu)點大比拼
- FlexBuilder3.0與Eclipse3.4的***結合
- 解析Flex應用開發(fā)步驟 新特性和技術框架