[AS3]AS3的基元数据类型和复杂数据类型的介绍
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
热门文章推荐
- [HLS]做自己的m3u8点播系统使用HTTP Live Streaming(HLS技术)
- [FMS]FMS流媒体服务器配置与使用相关的介绍
- [AS3]什么是M3U8,与HTML5的区别是什么
- AS2.0 让flash自适应全屏,并且不自动缩放
- [AS3]as3.0的sound类常用技巧整理
- [AS3]as3与ByteArray详解、ByteArray介绍、ByteArray用法
- 关于RTMP,RTMPT,RTMPS,RTMPE,RTMPTE协议的介绍
- [JS]分享浏览器弹出窗口不被拦截JS示例