Flex資料類型說明
基中繼資料類型包括Boolean、int、Null、Number、String、uint和void。ActionScript核心類還定義下列複雜資料類型:Object、Array、Date、Error、Function、RegExp、XML和XMLList。
◆Boolean資料類型
Boolean資料類型包含兩個值:true和false。對於Boolean類型的變數,其它任何值都是無效的。已經聲明但尚未初始化的布爾變數的預設值是false。
◆int資料類型
Flex資料類型中int資料類型在內部儲存為32位整數,它包含一組介於-2,147,483,648(-231)和2,147,483,647(231-1)之間的整數(包括-2,147,483,648和2,147,483,647)。早期的ActionScript版本僅提供Number資料類型,該資料類型既可用於整數又可用於浮點數。在ActionScript3.0中,現在可以訪問32位帶正負號的整數和不帶正負號的整數的低位機器類型。如果您的變數將不會使用浮點數,那麼,使用int資料類型來代替Number資料類型應會更快更高效。
對於小於int的最小值或大於int的最大值的整數值,應使用Number資料類型。Number資料類型可以處理-9,007,199,254,740,992和9,007,199,254,740,992(53位整數值)之間的值。int資料類型的變數的預設值是0。
◆Null資料類型
Flex資料類型中Null資料類型僅包含一個值:null。這是String資料類型和用來定義複雜資料類型的所有類(包括Object類)的預設值。其它基中繼資料類型(如Boolean、Number、int和uint)均不包含null值。如果您嘗試向Boolean、Number、int或uint類型的變數賦予null,則FlashPlayer會將null值轉換為相應的預設值。不能將Null資料類型用作類型注釋。
◆Number資料類型
在ActionScript3.0中,Number資料類型可以表示整數、不帶正負號的整數和浮點數。但是,為了儘可能提高效能,應將Number資料類型僅用於浮點數,或者用於int和uint類型可以儲存的、大於32位的整數值。要儲存浮點數,數字中應包括一個小數點。如果您省略了小數點,數字將儲存為整數。
Number資料類型使用由IEEE二進位浮點算術標準(IEEE-754)指定的64位雙精確度格式。此標準規定如何使用64個可用位來儲存浮點數。其中的1位用來指定數字是正數還是負數。11位用於指數,它以二進位的形式儲存。其餘的52位用於儲存"有效位元"(又稱為"尾數"),有效位元是2的N次冪,N即前面所提到的指數。
可以將Number資料類型的所有位都用於有效位元,也可以將Number資料類型的某些位用於儲存指數,後者可儲存的浮點數比前者大得多。例如,如果Number資料類型使用全部64位來儲存有效位元,則它可以儲存的最大數字為265-1。如果使用其中的11位來儲存指數,則Number資料類型可以儲存的最大有效數字為21023。
Number類型可以表示的最小值和最大值儲存在Number類的名為Number.MAX_VALUE和Number.MIN_VALUE的靜態屬性中。
Number.MAX_VALUE==1.79769313486231e+308Number.MIN_VALUE==4.940656458412467e-324儘管這個數字範圍很大,但代價是此範圍的精度有所降低。Number資料類型使用52位來儲存有效位元,因此,那些要求用52位以上的位元才能精確表示的數字(如分數1/3)將只是近似值。如果應用程式要求小數達到絕對精度,則需要使用實現小數浮點算術(而非二進位浮點算術)的軟體。
如果用Number資料類型來儲存整數值,則僅使用52位有效位元。Number資料類型使用52位和一個特殊的隱藏位來表示介於-9,007,199,254,740,992(-253)和9,007,199,254,740,992(253)之間的整數。
FlashPlayer不但將NaN值用作Number類型的變數的預設值,而且還將其用作應返回數字、卻沒有返回數位任何運算的結果。例如,如果您嘗試計算負數的平方根,結果將是NaN。其它特殊的Number值包括"正無窮大"和"負無窮大"。
注意
在被0除時,如果被除數也是0,則結果只有一個,那就是NaN。在被0除時,如果被除數是正數,則結果為正無窮大;如果被除數是負數,則結果為負無窮大。
◆String資料類型
String資料類型表示一個16位字元的序列。字串在內部儲存為Unicode字元,並使用UTF-16格式。字串是不可改變的值,就像在Java程式設計語言中一樣。對字串值執行運算會返回字串的一個新執行個體。用String資料類型聲明的變數的預設值是null。雖然null值與Null 字元串("")均表示沒有任何字元,但二者並不相同。
◆uint資料類型
uint資料類型在內部儲存為32位不帶正負號的整數,它包含一組介於0和4,294,967,295(232-1)之間的整數(包括0和4,294,967,295)。uint資料類型可用於要求非負整數的特殊情形。例如,必須使用uint資料類型來表示像素顏色值,因為int資料類型有一個內部符號位,該符號位並不適合處理顏色值。對於大於uint的最大值的整數值,應使用Number資料類型,該資料類型可以處理53位整數值。uint資料類型的變數的預設值是0。
◆void資料類型
Flex資料類型中void資料類型僅包含一個值:undefined。在早期的ActionScript版本中,undefined是Object類執行個體的預設值。在ActionScript3.0中,Object執行個體的預設值是null。如果您嘗試將值undefined賦予Object類的執行個體,FlashPlayer會將該值轉換為null。您只能為無類型變數賦予undefined這一值。無類型變數是指缺乏類型注釋或者使用星號(*)作為類型注釋的變數。只能將void用作傳回型別注釋。
◆Object資料類型
Object資料類型是由Object類定義的。Object類用作ActionScript中的所有類定義的基類。ActionScript3.0中的Object資料類型與早期版本中的Object資料類型存在以下三方面的區別:第一,Object資料類型不再是指定給沒有類型注釋的變數的預設資料類型。第二,Object資料類型不再包括undefined這一值,該值以前是Object執行個體的預設值。第三,在ActionScript3.0中,Object類執行個體的預設值是null。
在早期的ActionScript版本中,會自動為沒有類型注釋的變數賦予Object資料類型。ActionScript3.0現在包括真正無類型變數這一概念,因此不再為沒有類型注釋的變數賦予Object資料類型。沒有類型注釋的變數現在被視為無類型變數。如果您希望向代碼的讀者清楚地表明您是故意將變數保留為無類型,可以使用新的星號(*)表示類型注釋,這與省略類型注釋等效。下面的樣本顯示兩條等效的語句,兩者都聲明一個無類型變數x:
varx
varx:*
只有無類型變數才能儲存值undefined。如果您嘗試將值undefined賦給具有資料類型的變數,FlashPlayer會將該值undefined轉換為該資料類型的預設值。對於Object資料類型的執行個體,預設值是null,這意味著,如果嘗試將undefined賦給Object執行個體,FlashPlayer會將值undefined轉換為null。