·您当前的位置:首页 > 技术教程 > AS2与AS3技术 >

[AS3]AS3的基元数据类型和复杂数据类型的介绍

时间:2013-01-27 11:58CuPlayer
基元数据类型:包括(int、Number 、unit、 String、Boolean)类型。复杂数据类型:包括(Array、 Date、 Error、 Function、 RegExp 、XML 、XMList 及自定义的类)类型变量

AS3基本可以分为:

1、基元数据类型:包括(int、Number 、unit、 String、Boolean)类型
2、复杂数据类型:包括(Array、 Date、 Error、 Function、 RegExp 、XML 、XMList 及自定义的类)类型变量

基元数据类型定义:
var k:int = 100;
var k:int; (未赋值时,赋予默认值为Null, NaN, undefined 及各自应用对象:变量的默认值)
var h; var g:*;( 声明了,但未指定类型,默认为undefined未定义)

在AS2中未定义类型默认该对象为Object,AS3中归为未声明类型undefined

AS3 中所有数据都是对象,通过变量来操作对象,变量持有引用,而引用则指向要操作的对象。(var a:Array=new Array(1,2,3) 用new这个关键字,告诉flash player 要建立一个对象,对象的类型是数组,数组包含3个数1,2,3, 用a来遥控这个对象数组, 引用也是一种数据类型)

AS3也可以按值和引用区分数据类型:
1、值类型:直接存储值,即为基元数据类型。它不用new关键字来创建
eg:
var a:int = 3;
var b:int = a;
b=9;
结果a为3,b为9。

特点:直接存值,每个变量的值不因为其他变量值的改变而改变
其实基元数据类型的包装类也能创建基本类型对象,因此也可用new来实现

2、引用类型:存储引用,即为复杂数据类型
eg:
var a:Array=new Array(1,2,3);
var b:Array=a;
b[0]=4;
结果两个数组都变为了4,2,3;

var a:Array=new Array(1,2,3);
var b:Array=a;
var b:Array=new Array(1,2,3);
b[0]=4;

结果:
a:1,2,3
b:4,2,3

因为出现了两个对象,所以两个结果会变得不同了。

其实值类型是不变对象,虚拟机发现指向一个不变对象的引用要改变该不变对象的值,就会另行创建一个新的不变对象来接受新的值,而老的将被AVM(AS虚拟机)自动回收
eg:
var i:int=1;
i = i+2;

分析:
假设,第一次创立了int类型的不变对象A,值为1,并赋给了变量i
第二行加上了整型值2,改变了i的值。但是不变对象A并没有改变。
而是第二行一个新的不变对象B被创建,值为3,然后不变对象B的引用被赋给变量i
此时i持有的引用不再指向不变对象A,而是B,A对象被AVM自动回收。
此机制的好处是:存对象的引用更能省内存的空间,以免多个对象占用内存。

AS中基础类型就是对象,其包装类在应用中没有任何区别,int就对应着顶层类int
number就对应着顶层类number,所以可直接调用其方法。
eg:
var i:int = 1000;
trace(i.toExponential(2));
调用int对象的方法,输出i的指数形式1.ooe+4

热门文章推荐

请稍候...

保利威视云平台-轻松实现点播直播视频应用

酷播云数据统计分析跨平台播放器