Java5.0與ActionScript3.0語法比較

cactusz發表於2017-07-06

語言結構/語法 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立即停止指令碼執行。
正規表示式 支援 支援

感謝:http://akalius.iteye.com/blog/153274

相關文章