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