语言结构/语法 | Java 5.0 | ActionScript 3.0 |
类包 | .jar | .swc |
继承 | class Employee extends Person{…} | class Employee extends Person{…} |
变量声明及初始化 | String firstName=”John”; Date shipDate=new Date(); int i; int a, b=10; double salary; | var firstName:String=”John”; var shipDate:Date=new Date(); var i:int; var a:int, b:int=10; var salary:Number; |
未声明的变量 | n/a | var myVar:*; |
变量作用域 | 声明在花括号内的,作用域也在括号内。 声明在函数里的,作用域即在函数里。 成员变量:声明在类里。 没有全局变量。 | 没有花括号作用域,最小的作用域范围是方法。 声明在函数里的,作用域即在函数里。 成员变量:声明在类里。 如果一个变量的声明不在任何类或方法里,那么它就是全局变量。 |
字符串 | 不可变类 | 不可变类 |
分号终结符 | 必须的 | 如果一条语句一行的话,你可以省略分号。 |
严格等于号 | n/a | === 严格不等号:!== |
常量符号 | 关键字 final final int STATE= 1; | 关键字const const STATE:int = 1; |
类型检查 | 静态的 (在编译时检查) | 动态的 (在运行时检查) 和静态的(也叫‘strict mode’, 在 Flex Builder中是默认的) |
类型检查符 | instanceof | is – 检查数据类型, 例如 if (myVar is String){…} |
as操作符 | n/a | 很像is操作符, 但是返回值不是布尔型而是表达式: var orderId:String=”123”; var orderIdN:Number=orderId as Number; trace(orderIdN);//prints 123 |
原始类型 | byte, int, long, float, double,short, boolean, char | 所有的原始类型在ActionScript中都是对象。 Boolean, int, uint, Number, String 下面两行是相同的 var age:int = 25; var age:int = new int(25); |
复杂类型 | n/a | Array, Date, Error, Function, RegExp, XML, and XMLList |
数组的声明与实例化 | int quarterResults[]; quarterResults = new int[4]; int quarterResults[]={25,33,56,84}; | var quarterResults:Array =new Array(); or var quarterResults:Array=[]; var quarterResults:Array= [25, 33, 56, 84]; AS3也有以命名的方式代替元素序号的数组,类似Hashtable。 |
最基础的对象 | Object | Object |
类型转换语法: 将Object类转为Person | Person p=(Person) myObject; | var p:Person= Person(myObject); 或者 var p:Person= myObject as Person; |
向上声明 | class Xyz extends Abc{} Abc myObj = new Xyz(); | class Xyz extends Abc{} var myObj:Abc=new Xyz(); |
包 | package com.xyz; class myClass {…} | package com.xyz{ class myClass{…} } ActionScript的包不仅能包含类,也能包含独立的方法。 |
类访问级别 | public, private, protected 如果没有说明,该类就是能在包内访问。 | public, private, protected 如果没有说明,类就是internal访问级的(类似Java中的包访问级)。 |
常规的访问级别:命名空间 | n/a | 类似XML的命名空间。 namespace abc; abc function myCalc(){} 或 abc::myCalc(){} use namespace abc ; |
控制台打印 | System.out.println(); | // 只在debug模式下有效 trace(); |
Imports导入 | import com.abc.*; import com.abc.MyClass; | import com.abc.*; import com.abc.MyClass; |
无顺序的键值对 | Hashtable, Map Hashtable friends = new Hashtable(); friends.put(”good”, “Mary”); friends.put(”best”, “Bill”); friends.put(”bad”, “Masha”); String bestFriend= friends.get(“best”); // bestFriend is Bill | var friends:Array=new Array(); friends[”good”]=”Mary”; friends[”best”]=”Bill”; friends[”bad”]=”Masha”; var bestFriend:String= friends[“best”] friends.best=”Alex”; Another syntax: var car:Object = {make:”Toyota”, model:”Camry”}; trace (car[”make”], car.model); // Output: Toyota Camry |
提升 | n/a | 编译器会将方法中所有变量声明提到顶端,所以你可以用一个变量名甚至在它声明之前。 |
实例化 | Customer cmr = new Customer(); Class cls = Class.forName(“Customer”); Object myObj= cls.newInstance(); | var cmr:Customer = new Customer(); var cls:Class = flash.util.getClassByName(“Customer”); var myObj:Object = new cls(); |
私有类 | private class myClass{…} | AS3中没有私有类 |
私有的构造函数 | 支持 | 不支持 |
类和文件名 | 一个文件可以有多个类声明,但是只能有一个是public,并且这个文件名必须和这个类名一致。 | 一个文件可以有多个类声明 |
包里能放什么 | 类和接口 | 类, 接口, 变量, 方法, 命名空间, 和可执行的声明 |
动态类 (定义一个可以在运行时动态添加修改属性和方法的类). | n/a | dynamic class Person { var name:String; } //动态的添加变量和方法 Person p= new Person(); p.name=”Joe”; p.age=25; p.printMe = function () { trace (p.name, p.age); } p.printMe(); // Joe 25 |
方法 closure | n/a. | myButton.addEventListener(“click”, myMethod); |
抽象类 | 支持 | n/a |
方法重载 | 支持 | 支持. 必须使用override声明 |
方法过载 | 支持 | 不支持 |
接口 | class A implements B{…} 接口可以包括方法的声明和静态变量。 | class A implements B{…} 接口只能存放方法的声明。 |
异常处理 | 关键字: try, catch, throw, finally, throws 未捕捉的异常会向上传递到调用它的方法。 | 关键字: try, catch, throw, finally 方法不必声明异常。 不仅可以抛出Error对象,也能抛出数字: throw 25.3; 一旦有未捕捉的异常Flash Player立即停止脚本执行。 |
正则表达式 | 支持 | 支持 |