1. 程式人生 > >Flex基礎-----之Flex中資料型別

Flex基礎-----之Flex中資料型別

關於資料型別

一個變數或者常量被宣告時,必須指定其資料型別:
原生資料型別:語言本身提供:字串、整數、布林型等
複雜資料型別:由基本資料型別組成的複合型型別:類、介面等。

基本資料型別:
  • Boolean:布林型,true 和 false
  • int: 整數,存放32位二進位制整數,範圍:-2147483648~2147483647,當超出自動轉為Number
  • Null:空值,是字串和所有類的預設值。
  • Number:整數型和浮點型,使用64位雙精度格式存放資料,沒有小數點時自動轉換成整數。最小值和最大值分別存放在Number 物件的MIN_VALUE 和 MAX_VALUE屬性中。
  • String:字串,以Unicode 編碼格式存放。
  • uint:正整數型別,0~4294967295
  • void:值為undefined,只能用作函式的返回型別。

複雜資料型別:Object 物件、 Array 陣列、 Date 日期、Error 錯誤物件、Function 函式、 RegExp 正則表示式、XML XML資料物件、XMLList。
其中Object 是所有物件的基類。

以下是各個型別的預設值
  • Object、Array :null
  • Number:NaN
  • int、uint:0
  • Boolean:false
  • *:不定型別,預設值:undefined。

7.3.1 物件

          如果要在MXML中建立物件,可使用<mx:Object>標籤並新增所有屬性及其值。例如:

<mx:Object id="person" firstName="John" lastName="Smith" age="33" />

在MXML建立物件有個限制即不能建立多個巢狀的物件,而在script標籤中可建立包含多個複雜物件的物件,你可以先建立一個型別的Object物件,再呼叫建構函式,最後新增屬性:

var object :Object = new Object();

var otherObject :Object = new Object();

object.other = otherObject;

還可以通過大括號來建立物件,例如

var pertson:Object = {name:"John Smith",age:22,position:{department:"Accounting",Salary:50000},id:30003};

注意Person物件的position屬性指向另一個包含不同屬性的物件,還發現這裡的position並不需要先申明。
7.3.2 字串

可以使用單引號和雙引號 來宣告字串,也可以使用String 的建構函式來生成:
var str1:String = 'string';
var str2:String = "string";
var str3:String = new String("string");

使用轉義符號“/” 來轉義符號後面的字元:"string/"test" = string"test

String 的屬性:
  • length:用來獲取字串的長度
  • contact(...args):合併字串,也可以使用+合併字串
  • charAt(index):獲取index位置的字元。
  • indexOf(val, starIndex):從starIndex 開始查詢val 在字串中第一個出現的位置。找不到返回-1
  • split(delimiter, limit):返回以delimiter 分隔最大為limit的陣列。
  • substr(startIndex, len):從startIndex 位置開始擷取長度為len的字元,如果startIndex為-1表示最後一個位置,當len大於最大長度時,自動返回最大長度值。
  • substring(startIndex, endIndex):擷取從 startIndex 到 endIndex位置的字元,兩個引數都不能為負數,否則轉為0,如果endIndex 省略,取預設值:字元的長度。
  • slice(startIndex, endIndex):同substring,並允許startIndex, endIndex 為複數。
  • toUpperCase():轉換為大寫
  • toLowerCase():轉換為小寫


7.3.3 數字計算

Math 類 方法說明:

  • Math.round(n):四捨五入
  • Math.floor(n):返回小於或等於指定數字n 的最大整數
  • Math.ceil(n):返回大於或等於指定數字n 的最小整數
  • Math.pow(val1, val2):計算val1 的 val2 次冪
  • Math.sqrt(val):val的平方根
  • Math.max(val1, val2, ...rest):技術給定數字的最大值
  • Math.min(val1, val2, ...rest):技術給定數字的最小值
  • Math.randow():獲取一個隨機數字: 小於1大於等於0


7.3.4 陣列的使用

建立陣列:
var arr:Array  = new Array(); //預設元素值為undefined
var arr:Array  = new Array(3); //建立一個包含3個元素的陣列。
var arr:Array  = new Array("1", "2", "3"); //直接給陣列定義元素
var arr:Array  = [];
var arr:Array  = ["1", "2", "3"];//這是我比較喜歡的建立方法
var arr:Array  = [3];  //並不是定義3個元素,而是將3作為資料放到陣列中

獲得陣列元素:
arr[0]:第一個元素,如果下標超出範圍,返回 undefined
arr.length:數字的長度

插入元素:
  • push():將資料新增到陣列的尾部,push("flex")
  • unshift():將資料新增到陣列隊頂部,unshift("flex")
  • splice(startIndex, deleteCount, ...values):把資料插入到陣列的指定位置,startIndex:操作的下標,deleteCount:要刪除的元素個數,...values:要新增的若干資料。

刪除元素:
  • pop():刪除陣列的最後一個元素
  • shift():刪除第一個元素
  • splice(startIndex, deleteCount, ...values):刪除任意位置的元素,從startIndex開始刪除deleteCount個元素,並新增元素 values。

排序:
  • sort:主要對簡單資料結構的陣列進行排序
  • sortOn:對複雜資料結構的陣列排序
  • reverse:將現有順序逆向
排序規則:排序規則可同時使用如:sort(Array.CASEINSENSITIVE | Array.DESCENDING)
  • Array.CASEINSENSITIVE:不區分大小寫
  • Array.DESCENDING:降序排序
  • Array.UNIQUESORT:如果元素都是唯一,不存在重複就進行排序,否則不排序
  • Array.RETURNINDEXEDARRAY:將排序後的元素的新順序返回,但不修改原來的陣列
  • Array.NUMERIC:按照數字大小排序
複雜排序:
arr.sortOn("age", Array.NUMERIC); //"age"為元素的屬性,將使用age來排序

多維陣列:
var arr:Array  = new Array();
arr:push(["1","2"]);
訪問:arr[0][0]


7.3.5 型別檢測和轉換

型別檢測:
  • typeof 物件:如果是由使用者的類產生的物件,一律返回object。只能對基本型別檢測。

資料型別
結果
資料型別
結果
Array
object
object
object
Boolean
boolean
String
string
Function
function
uint
number
int
number
XML
xml
Number
number
XMLList
xml

  • 物件 is 型別:對物件的型別進行精確判斷。如果物件是型別返回true,否則返回false。

型別轉換:
  • 隱式轉換:大部分由flash player 來完成,如:undefined 會自動轉為null
  • 顯示轉換:通過編寫程式碼來完成:型別(物件) ,也可以通過這樣轉換:物件 as 型別 ,如果成功返回物件轉換後的值,否則返回null,不會引發異常。