`
兩ting
  • 浏览: 78362 次
  • 性别: Icon_minigender_2
  • 来自: 成都
社区版块
存档分类
最新评论

As3.0与java数据类型的比较总结

    博客分类:
  • AS
阅读更多

 

As3.0与java数据类型的比较总结

 1063人阅读 评论(2) 收藏 举报

1.  在As3.0中所有的数据类型都是对象,都有自己的方法和属性;

Java中的基本数据类型,其采取和C和C++相同的方法。也就是不用new来创建变量,而是创建一个并非是引用的“自动”变量。这个变量直接存储“值”,因此更加高效。

 

  1.  As3.0中String类型的字面量可用 "" 或 ''引起来,而java中只能用双引号封闭。

 

  1.  As3.0在声明变量时要加上var 关键字

例4:

 

var variableName:variableDataType=data;       //variableDataType表示数据的类型

 

在声明复杂数据类型时使用new关键字

例5:

 

var obj:object=new object();                  //声明了一个object类型的变量obj

而java中基本变量的声明与C是十分相似的,其他类型的变量则使用关键字new来申请空间。

 

  1. object数据类型

 

Object类型是所有As3.0数据类型的基类,其他数据类型都是从object数据类型继承来的

 

初始化:

例6

var obj:Object=new Object();               //通过构造函数初始化

还可以使用{ }直接对其赋值

例7

var obj:Object={name:”lee”,age=18,address=”ningbo”};     其中{ }是As3.0中的初始化对象运算符

obj.name=”peter”;                         //改变属性值

obj[“name”]=”tom”;                       //改变属性值的另一种方法

在java中object是抽象类是不能被初始化和赋值的。

still water run deep!!
============================================================================
As3.0数据类型
 
数据类型
默认值
布尔型(Boolean
False
整数(int
0
数字(Number
NaN(Not a Number)
对象(object
Null
字符串(String
Null
自然数(uint
0
 
说明:
1. As3.0数据基本数据类型包括:Boolean, int,  Uint,, Number, String , void, Null.
2.除基本数据类型以外的数据类型都是复杂数据类型,由于存储方式不同,使用原始数据类型要比使用复杂数据类型更加高效.
=====================================================
常量定义:(使用关键字const)
eg:
const foo:int = 11;
foo=9; //
注:常量不能被重新赋值。

对于值类型常量持有的就是值,而引用类型常量持有的是引用,
引用类型,常量只能保证持有的引用不变,并不能保证引用对象自身的状态不发生改变

eg:

const foo:Array = [1,2]
var b:Array = foo;
b[1]=100
;
trace(foo);
结果:1,100
foo = [2,3]
;//错,常量不能被改变

布尔类型定义:
var a:Boolean = true;
trace(a);
结果:true
Boolean 定义未赋值时AS3中默认为false,但在AS2中默认为undefined

数值类型定义:
int、uint是整形数值,Number处理浮点数。
int 是有符号32位的整形数,数值范围从负的2的31次方到正的2的31次方减1,留一位来标注正负号
uint 是无符号的32位整形数,范围零到2的32次方减1,一般处理和颜色有关的值0xFFFFFF,基本为这样的像素值准备。
Number 是64位浮点值,类似于双精度浮点值double类型,而AS3只有Number
一般浮点数在计算中出现的bug要用Math.round()来修正

字符串类型定义:
var a:String
; 未定义默认为null
var a:String = ""
;
var a:String = new String(); 用包装类来声明,默认为""
var a:String = "abc";
var a:String = new String("abc");
var a:String = 'abc';
var lenght:Number = a.length

/n表示换行,/r表示回车,/t表示制表,/表示转义符,// /' /"此三个字符需要转义

数组类型定义:
var a:Array; 声明了一个数组变量,还没有指向谁,默认为null
var a:Array = []
; 声明了一个数组,数组输出空白,不是null了
var a:Array = new Array();
声明了一个数组,数组输出空白
var a:Array = [1,2];//1,2
var a:Array = new Array(1,2);
var a:Array = new Array(1);声明一个长度为1的空数组,每个数组元素都为空可用a[0]=1进行赋值。

高级关联数组定义:
关联数组有时候也称为"哈希"或"映射",由键和键值组成。关联数组是键和值对的无序集合。
在as3中引入了名为"字典"的高级关联数组。
字典是 flash.utils 包中 Dictionary 类的实例,使用的键可以为任意数据类型,
但通常为 Object 类的实例。即字典的键不局限于 String 类型的值。

故关联数组的键名分类有以下2种。

1、.键名为字符串:在 as3中有两种创建关联数组的方法。 
a).使用 Object 构造函数
Object 类的实例(也称作"通用对象")在功能上等同于关联数组。
通用对象的每个属性名称都用作键,提供对存储的值的访问。
如:
var monitorInfo:Object = {type:"Flat Panel", resolution:"1600 x 1200"};
trace(monitorInfo["type"], monitorInfo["resolution"]);
// 输出:Flat Panel 1600 x 1200

若在声明数组时不需要初始化,则以[] 或者 . 添加值。
如:
var monitorInfo:Object = new Object();
monitorInfo["aspect ratio"] = "16:10";
monitorInfo.colors = "16.7 million";
trace(monitorInfo["aspect ratio"], monitorInfo.colors);
// 输出:16:10 16.7 million

b)用 Array 构造函数,如果将关联数组声明为 Array 类型,则将无法使用对象文本初始化该数组。
var monitorInfo:Array = new Array();
monitorInfo["type"] = "Flat Panel";
monitorInfo["resolution"] = "1600 x 1200";
trace(monitorInfo["type"], monitorInfo["resolution"]);
// 输出: Flat Panel 1600 x 1200

用 Array 构造函数创建关联数组没有什么优势。即使使用 Array 构造函数或 Array 数据类型,也不能将 Array 类的 Array.length 属性或任何方法用于关联数组。 最好将 Array 构造函数用于创建索引数组。

  即不赞成用array做字典以及哈希组织数据。

2、键名为对象
用 Dictionary 类创建使用对象而非字符串作为键的关联数组。

如,考虑这样一个应用程序,它可根据 Sprite 对象与特定容器的关联确定 Sprite 对象的位置。
可以使用 Dictionary 对象,将每个 Sprite 对象映射到一个容器。

如下例子:

import flash.display.Sprite;
import flash.utils.Dictionary;

var groupMap:Dictionary = new Dictionary();

// 作为键名的对象
var spr1:Sprite = new Sprite();
var spr2:Sprite = new Sprite();
var spr3:Sprite = new Sprite();

// 用作值的对象
var groupA:Object = new Object();
var groupB:Object = new Object();

// 在字典中创建新的键-值对。
groupMap[spr1] = groupA;
groupMap[spr2] = groupB;
groupMap[spr3] = groupB;

if (groupMap[spr1] == groupA)
{
trace("spr1 is in groupA");
}
if (groupMap[spr2] == groupB)
{
trace("spr2 is in groupB");
}
if (groupMap[spr3] == groupB)
{
trace("spr3 is in groupB");
}

对象及关联数组
定义:
var a:Object = new Object();使用构造函数
var a:Object = {}
;使用大括号对作为new 0bject()函数的语法快捷方式

eg1:
var a:Object = {a:1,b:2}
;
trace(a.b);
结果:2

eg2:
var aa:Object = {
hello : function():void{
trace('hello');
},
ok : function():String{
return "ok";
}
}
aa.hello()
;
trace(aa.ok());
结果:hello
ok

eg3:
var aa:Object = {};
aa.a=1
;
aa.b = function():int{
return 2;
}
trace(aa.b())
结果:2

eg4:
var a:Object={};
var b:Date = new Date();
var c:String;
if (b.getTime()%2==0) {
//注:b.getTime()得到当前unix时间戳
    c="名字";
} else {
c="name";
}
a[c]="黑羽";
//注:由于c此时为变量,若用a.c="黑羽";的形式。for… in遍历出的键值还是变量本身c
for (var i in a) {
trace('当前属性名' + i + ",当前属性值" + a[i]);
}
结果:当前属性名name,当前属性值黑羽

eg5:
var a:Object = {};
a['web'] = 'www.baidu.com';//数组与对象的通用形式
trace(a.web);
结果:www.baidu.com

Null , NaN ,undefined类型定义
var a:int, b:uint, c:Number; 默认值分别为0 0 NaN(不是一个数)
var d:String, e:Boolean; 默认值分别为null false
var f:Array; 默认值 null
var g:Object; 默认值 null
var h; 未声明类型,默认值undefined
var i:*; 未声明类型 默认值undefined
As2中只要未声明变量都默认为undefined

var a:Number //先声明一个没有初始化的Number变量a
var b:Number = 10
var c:Number = a + b //NaN
var d:Number = b - a //NaN
var e:Number = b * a //NaN
var f:int = b - a //0
var h:uint = b + a //0 将默认值赋给不相同的类型,会自动转换成被赋值类型的默认值var b:Boolean =NaN 值为false
==================================================
*新的变量类型

AS3中有许多新的数据类型。其中有些类型是以前没有出现的。AS3中的基本数据类型如下:

简单数据类型:

Boolean 
int 
null 
Number 
String 
uint 
undefined
复杂数据类型:

Object 
Array 
Date 
Error 
Function 
RegExp 
XML 
XMLList
新的数据类型通过类来定义,例如: Matrix (flash.geom.Matrix)
Shape (flash.display.Shape)URLRequest (flash.net.URLRequest)
等等。

注意:

特殊类型Void在AS3中被改成了全小写:void。

“*”可以用来代表所有数据类型。如下:

var anything:*;
AS3中的XML和AS1和AS2中完全不一样。以前的XML类型(对象)被定义为XMLObject。AS3中的XML是标准的E4X-based XML对象。

int和uint是number类型的新扩展,int表示整型(没有小数),unit是无符号整型(不能是十进制,不能是负数)。 使用int型比使用Number能稍微的提升运行效率,而uint型只应该使用在必须的地方,比如颜色值。

*显示对象

AS3有一个新的集合:显示对象。这个集合包含了所有可以在舞台上看到或者可以被添加到显示列表中的对象,包括以前的MovieClip,button和textField对象。AS3的显示对象有:

AVM1Movie 
Bitmap 
Loader 
MorphShape* 
MovieClip 
Shape 
SimpleButton 
Sprite 
StaticText* 
TextField 
Video
有*的表示此对象必须在舞台上手动创建,不能直接通过AS创建。

AVM1Movie是使用AS1和AS2创建的Movie,AS3创建的Movie需要通过AVM2来播放。因此用AS1和AS2创建的Movie在AVM2中被作为一个显示对象来播放。但是不能和AS合使用。

Bitmaps是位图对象。可以通过BitmapData对象来指定显示效果,也可以通过位图文件来设定。

Loader对象用来加载和显示外部的image和swf影片文件。

MorphShapes是在时间轴上创建的图形。虽然不能通过AS创建,但是可以通过AS来引用和控制。

MovieClips人人都会用

Shapes是从MovieClip中分离出来一个只有graphics对象的图形容器。在shape中可以通过graphics对象使用绘图API绘制各种图形。使用shape代替MovieClip可以减少内存负担。

Sprite是没有时间轴的MovieClip,在AS3使用中,可能会在很多地方使用sprite代替MovieClip,尤其在创建自定义的显示组件时。

StaticText和MorphShapes一样,不能通过AS创建,这是在时间轴上创建的文本对象。

TextField,文本对象。

Video对象,播放flash视频。

*新的import标识

AS3中的import标识和AS2中有一些不同。在AS2中,import被用来代理引用类的长名称,在类中并不是必须的。因此在AS2中,如果你不使用import,你也可以使用类的长名称来引用,例如:

// ActionScript 2 
var myPoint:flash.geom.Point = new flash.geom.Point(0,0);
在AS3中,import标识是访问类的必须标识。在使用到其他类的时候,也可以使用类的长名称,但是import不能省略掉。例如:

// ActionScript 3 
import flash.geom.Point; 
var myPoint:flash.geom.Point = new flash.geom.Point(0,0);
和AS2一样,import中可以使用通配符(*)来导入整个包:

import flash.geom.*;
====================================================

 

1.AS3中的数据类型

AS3中所有的数据都是对象。(Everything is an Object 相对于Java 它是完全面向对象 Java基本数据类型不是继承Object类)

AS3中最核心的类是Object类。所有一切类都继承自Object类。

AS3中的数据类型 分为基本数据类型和复杂数据类型

基本数据类型包括:Boolean ,int,Number,String和unit (注意大小写 与Java不同)

Boolean 默认值false

int 默认值 0  ,32位整数

Number 默认值 NaN,64位浮点数

String 默认值null ,字符串

unit 默认值0 ,一般用于颜色上

复杂数据类型包括:Array,Date,Error,Function,RegExp,XML,XMLList,我们自己定义的类。

2.变量的声明和使用

AS3和Java 一样,变量必须先声明再使用

在AS3中变量声明格式如下:

var 变量名:数据类型;

var 变量名:数据类型 = 值;

Var 是一个关键字,用来声明变量。变量的数据类型写在冒号后面。其次,如果要赋值,数据类型和变量声明的必须一致(与Java相同 静态语言的编译时检查),如果没有赋值,变量会根据自己的类型赋予默认值。

var a;  声明a未指定类型 (untyped)

var b:*; 效果同上

3.值类型和引用类型的区别

值类型等同于基本类型,其余全都是引用类型。

值类型的数据可以不用new关键字来创建,当然也可以用new关键字创建。必须用new关键字创建的一定不是值类型。

例1

var a:int = 3;

var b:int = a;

b = 9;

trace(a); //结果3

trace(b); //结果9 

例2

var a:Array = new Array(1,2,3);

var b:Array = a;

b[0] = 100;

trace(a); //结果 100,2,3

trace(b); //结果 100,2,3

例3

var a:Array = new Array(1,2,3);

var b:Array = a;

b = new Array(100,200,300);

b[0] = 10;

trace(a);//结果1 2 3

trace(b);//结果10 200 300

AS3中的引用类型和java中的非基本类型相同

4.基本数据类型

在Java中,值类型并不是以对象形式存在的。值类型的变量,存储的不是引用,而是直接容纳了值,AS3中即使是值类型,也存储的是引用,只不过引用的是特殊对象(不可变对象)

5.使用const声明常量

语法

const foo:int = 45;

foo = 100;//报错

6.详细讲解基本数据类型

布尔型:Boolean

比较AS2和AS3中的区别

//AS2

var b:Boolean;

trace(b);  //undefined

trace(b == false); //false

//AS3

var b:Boolean;

trace(b); //false

trace(b == false) ;//true

数字型

int 是有符号32位的整型数

unit 是没有符号的32位整型数

Number 是64位浮点数

能用整数优先使用int和unit。

只处理正整数时,处理颜色时使用unit。

有小数时使用Number。

var a:int = 9;

var b:int = a/2;

trace(b);//4

var c:Number = a/2;

trace(c);//4.5

要小心整数数值的边界

var i:unit = 0;

 

i--;

trace(i); //期望的结果是-1 实际结果是4294967295

字符串String

var stringSample1:String ;

var stringSample2:String = "";

var stringSample3:String = new String();

var stringSample4:String = "abc";

var stringSample5:String = new String("abc");

var stringSample6:String = 'abc';

var stringSample:String = "this is a sample";

var stringLength:String = stringSample.length;

数组:Array

Var a:Array;

Var b:Array = [];

Var c:Array = new Array();

Var d:Array = [1,2,3,4];

Var e:Array = new Array(1,2,3,4);

Var f:Array = new Array(5);

Object

Object的成员有两种:一种是属性,一种是函数

声明一个Object

//1.使用构造方法

var foo:Object = new Object();

//2.使用空的大括号

var bar:Object = {};

//3可以写入属性和方法

var foo1:Object = {id:10,name:"hurry",hello:function(){return "Hello !!!"}};

trace(foo1.name);

trace(foo1.hello());

//4.Object可以动态的添加属性

var student:Object = {};

student.id = 1;

student.name = "hurry";

trace(student.name);

//5.动态添加方法

student.sleep = function() {

trace("I am sleep !!!");

student.sleep();

//6使用.或[]访问Object属性

多位数组

var sampleArray1:Array = [ [1, 2, 3 ] , [ 4, 5, 6 ] , [ 7, 8, 9 ] ];

trace(sampleArray1[1]);

trace(sampleArray1[1][2]);

var sampleArray2 = new Array(new Array(1,2,3), new Array(4,5,6), new Array(7,8,9) );

trace(sampleArray2[2][1]); 

var sampleArray3:Array = new Array(3);

sampleArray3[0] = [1,2,3];

...

...

7变量的默认值

int 默认值 0    unit 默认值0   Number 默认值 NaN  String 默认值null  

Boolean 默认值 false  Array 默认值 null  Object 默认值 null   未声明 默认值 undefined

如果一个Number类型的变量未赋值,则它参与的任何的数学运算的结果都是NaN

分享到:
评论

相关推荐

    Java转AS3.0工具

    - **类型转换**:Java中的数据类型如int、String等需要转换为AS3.0的Number、String等。 - **控制流转换**:处理Java的循环、条件语句,转换为AS3.0的对应语句。 - **异常处理**:Java的try-catch-finally转换为...

    AS3.0 饼图 图表

    AS3.0是ActionScript的重大升级,引入了强类型、类和包等特性,使其更接近于Java和C#这样的现代面向对象语言。在创建饼图时,我们需要定义一个自定义的类,这个类将包含绘制和更新饼图所需的方法和属性。 **类结构*...

    flash+as3.0贪吃蛇游戏

    1. **ActionScript 3.0基础**:AS3.0是Flash平台的重要组成部分,它的语法与JavaScript有较大差异,更接近于Java。了解变量、数据类型、函数、类和对象等基本概念是开始这个项目的前提。 2. **面向对象编程**:AS...

    protobuf3.0 源码+unity+as+java整理包

    在protobuf3.0中,所有的数据类型都声明在.proto文件中,例如`message`关键字用来定义一个数据结构,`int32`、`string`等则定义字段的数据类型。`.proto`文件的编写是protobuf的核心,因为它决定了生成的类库的结构...

    flash 时钟源代码 as

    AS3.0是ActionScript的重大升级,与之前的版本相比,它提供了更强的类型检查、更快的性能和更现代的面向对象编程特性。它采用了ECMAScript 3的语法,使得代码更加严谨和易于维护。AS3.0的核心特性包括类、包、接口、...

    ACTIONSCRIPT3.0中文帮助

    1. **基础语法**:AS3.0的语法结构与Java和C++类似,包括变量声明、数据类型(如Number、String、Boolean等)、运算符以及流程控制语句(如if-else、for循环、while循环)。 2. **面向对象编程**:AS3.0是完全的...

    Flash ActionScript3.0教程示例(从入门到精通).rar

    教程会从基础开始,介绍AS3.0的变量、数据类型、流程控制语句(如if语句和for循环)以及函数的使用。 其次,类和对象是AS3.0的核心概念,教程将详细解释如何定义类、创建对象并使用继承和多态性来设计可扩展的代码...

    Flash+ActionScript+3.0高级动画教程+源代码

    1. **基础语法**:了解ActionScript 3.0的基本结构,包括变量声明、数据类型、运算符、流程控制语句(如if语句、for循环和while循环)以及函数。 2. **面向对象编程**:深入理解类和对象的概念,学习如何定义类、...

    全套源码-聊天室 ActionScript 3.0实现

    - **数据类型**:包括基本数据类型(如int、uint、Number、String等)以及动态和强类型的概念。 2. **网络通信** - **Socket连接**:聊天室通常需要建立客户端与服务器之间的实时通信。AS3提供了Socket类,允许...

    ActionScript 3.0入门教程ppt

    - **相同之处**:AS3的变量类型和定义方法与Java和C++相似,都支持基本数据类型(如int、String等)和引用类型(如类实例)。 - **不同之处**:AS3是动态类型的,不需要在声明时指定变量的具体类型,而Java和C++是...

    EJB3.0

    - **下载与安装**: 首先需要下载并安装JBoss AS(Application Server),这是运行EJB 3.0应用的基础。 - **运行示例**: 安装完成后,可以通过示例项目来验证EJB 3.0是否正确配置。 - **独立Tomcat调用EJB**: 在某些...

    ActionScript3.0的资料

    这包括数据类型(如字符串、数字、布尔值和对象)、变量声明、操作符和流程控制结构(如if语句和循环)。ActionScript 3.0引入了强类型系统,这提高了代码的稳定性和可维护性,但也要求开发者在编写代码时明确指定...

    EJB3.0中文文档

    ### EJB3.0中文文档知识点总结 #### 第一章:EJB知识与运行环境配置 **1.1 什么是ENTERPRISE JAVA BEANS (EJB)** EJB(Enterprise JavaBeans)是一种Java标准,用于构建分布式、健壮的企业级应用程序。它允许...

    ActionScript 3.0 Programming Overview

    AS3中的类支持继承和封装等面向对象特性,允许开发者创建复杂的数据类型和行为。 ##### 2. 显示编程 (Jumping into Display Programming) **显示编程**主要涉及如何在Flash舞台上动态创建和管理图形元素。AS3提供...

    RINEX 3.0协议

    RINEX 3.0中对于伪距的定义更加精确,可以区分不同类型的伪距观测数据,如C/A码伪距、P码伪距等。 ##### 3.3 相位 相位是指载波相位观测值,同样是GNSS定位中的重要参数之一。RINEX 3.0支持多种相位观测数据,如L1...

    JBOSS7+EJB3.0

    JBOSS AS(Application Server)是Red Hat公司开发的一款开源Java EE应用服务器,而EJB 3.0是Java平台上用于构建可扩展、安全和事务处理的服务器端应用程序的标准组件模型。 **JBOSS7** 是JBOSS应用服务器的一个...

    Criteria(hibernate3.0).rar_Criteria java_criteria Hibernate_hibe

    还可以通过`Transformers`将查询结果转换为特定的对象,如`as(Class clazz)`可以将结果转换为指定类型的列表。 六、动态Criteria 动态Criteria允许我们在运行时构建查询,通过`createCriteria(String propertyName...

    ActionScript3.0 语言和组件参考(CHM)

    2. **数据类型**:详细说明各种内置类型,如Number、String、Boolean等。 3. **运算符和表达式**:涵盖算术、比较、逻辑等运算符以及如何组合它们形成表达式。 4. **控制流程**:包括条件语句(if、switch)、循环...

    ActionScript_3.0开发技术大全

    - **语法结构**:AS3 的语法类似于 Java 和 C#,包括变量声明、数据类型、控制结构等。 - **面向对象编程**:AS3 支持面向对象编程(OOP),包括类、接口、继承和多态性。 - **事件处理**:AS3 提供了一套强大的事件...

Global site tag (gtag.js) - Google Analytics