Java5.0與ActionScript3.0語法比較
語言結構/語法 | 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
相關文章
- MongoDB語法與現有關係型資料庫SQL語法比較MongoDB資料庫SQL
- NoSQL資料庫概覽及其與SQL語法的比較SQL資料庫
- 幽默:程式語言與遊戲比較遊戲
- python開發-與其他語言的比較Python
- Ruby程式語言與Ruby之間的比較
- Vue與React比較VueReact
- 【Redis與Memcached比較】Redis
- RecyclerView與ListView比較View
- js與jq比較JS
- PostgreSQL與MySQL比較MySql
- Vuex與Redux比較VueRedux
- React.js和Vue.js的語法並列比較ReactVue.js
- k語言和q語言的比較
- 比較無語的系統
- 流行語言的比較 (轉)
- React與Vue模板使用比較(一、vue模板與React JSX比較)ReactVueJS
- 從OOP和FP看蘋果Swift語言與Scala比較OOP蘋果Swift
- Flutter 與 iOS 功能比較FlutteriOS
- Flutter與Swift比較 - evroneFlutterSwiftVR
- Hibernate與mybatis比較MyBatis
- Python 與 Javascript 比較PythonJavaScript
- 黑格爾辯證法與形式邏輯哲學比較
- OC,swift,javascript,Dart語言比較SwiftJavaScriptDart
- Go語言的Web框架比較GoWeb框架
- 跨語言通訊方案比較
- 多語言永續性與資料儲存比較綜述
- PostgreSQL與MySQL的比較 - hackrMySql
- JavaScript與WebAssembly進行比較JavaScriptWeb
- MVVM與MVC模式的比較MVVMMVC模式
- Spring Boot與Micronaut比較Spring Boot
- OpenShift與Docker全方位比較Docker
- Rust, Go與Hasekll比較 - RedditRustGo
- XTask與RxJava的使用比較RxJava
- 比較Spring AOP與AspectJSpring
- JavaScript 與 Java、PHP 的比較JavaScriptPHP
- 模組化與微服務比較微服務
- Hadoop與Spark的比較HadoopSpark
- Storm與Spark Streaming比較ORMSpark