JavaFX專欄
大綱
跟 Java 一樣
//單行註解 /*多行 註解 */ /*另外一種 *多行註解 */
| 型態 | 細節 | 對應的 Java 型態 |
|---|---|---|
| Boolean | True of False | java.lang.Boolean |
| Byte | 8bit | java.lang.Byte |
| Character | 16bit Unicode | java.lang.Character |
| Double | 64bit 浮點數 | java.lang.Double |
| Duration | 時間間隔 | |
| Float | 32bit 浮點數 | java.lang.Float |
| Integer | 32bit 整數 | java.lang.Integer |
| Long | 64bit 整數 | java.lang.Long |
| Number | 32bit 浮點數 | java.lang.Float |
| Short | 16bit 整數 | java.lang.Short |
| String | Unicode 文字 | java.lang.String |
JavaFX 新的型態,用來表示時間間隔,給值時要加上時間單位,最小是 ms 最大是 h,同時也可以進行運算。
var dur1 = 15ms; var dur2 = 15s; var dur3 = 15m; var dur4 = 15h; println(dur1); println(dur2); println(dur3); println(dur4); println(dur1+2ms); println(dur2-3s); println(dur3*4); println(dur4/5);
Output
15.0ms 15000.0ms 900000.0ms 5.4E7ms 17.0ms 12000.0ms 3600000.0ms 1.08E7ms
var valLong1:Long= 123456789; var valLong2 = 123456789; //以下會出現編譯錯誤 valLong2 = "Hello! World"; //以下會喪失小數點後的數值 valLong2 = 999.99;
保留字 var 用來宣告變數,變數名稱是 valLong1,可在變數名稱後面用「:」指定變數型態,也可以不指定變數型態,注意的是 JavaFX 變數是靜態型別,非動態型別,所以在程式的操作中,給了不是 Long 的型別的值會發生錯誤。
var valLong3; var valLong4:Long; var valLong5:Double;
Output
null 0 0.0
def valLong6 = 123456789; //以下會出現編譯錯誤 valLong6 = 999;
跟 final 一樣,給值後就不能在更改了。
var valLong7:Double = 999.999; println(valLong7); println(valLong7.getClass()); println(valLong7.hashCode()); println(valLong7.intValue()); //也可以取用物件內的靜態成員 println(Double.MAX_VALUE);
Output
999.999 class java.lang.Double -1288078753 999 1.7976931348623157E308
雖然是 JavaFX,不過取用物件內的方法、成員跟 Java 一樣。
var val8:Double = 99999.99999;
var val9:Float ;
val9 = val8 as Float;
println(val8);
println(val9);
Output
99999.99999 100000.0
使用 as 來進行型別轉換,要注意的是長度長的型別轉到長度短的型別,會發生精確度的問題。
var str:java.lang.Object = "A string";
println("str var is string? {(str instanceof String)}");
Output
str var is string? true
對於未知型別可以使用 instanceof 來判斷型別,結果就是 true 跟 false。
循序集合(Sequences),類似陣列,但具有許多特殊的操作
var seq1 = [ 1 .. 100 ]; println(seq1[0]); println(seq1[49]); println(seq1[99]); //印出陣列長度 println(sizeof seq1); var seq2 = [ 0 .. 100 step 5]; println(seq2[0]); println(seq2[9]); println(seq2[19]); //可以直接印出陣列內的所有內容 println(seq2);
利用 [x .. y] 宣告從 x 到 y 的陣列,另外可以使用 step 來決定步進值。可以使用 sizeof 來取得陣列長度,另外直接將陣列丟進 println() 會將陣列內的所有元素印出。
Output
1 50 100 100 0 45 95 [ 0, 5, 10, 15, 20, 25, 30, 35, 40, 45, 50, 55, 60, 65, 70, 75, 80, 85, 90, 95, 100 ]
可以綁定 B 變數參照 A 變數,當 A 變數的值有變動 B 變數也會跟著變。
var thisYear = 2008; def lastYear = bind thisYear-1; def nextYear = bind thisYear+1; println("2008: {lastYear}, {thisYear}, {nextYear}"); thisYear = 1996; println("1996: {lastYear}, {thisYear}, {nextYear}");
Output
2008: 2007, 2008, 2009 1996: 1995, 1996, 1997
可以看到 lastYear 跟 nextYear 是跟著 thisYear 跑,即使 lastYear 跟 nextYear 是使用 def 宣告的也是一樣,因為 lastYear 跟 nextYear 都是拿 thisYear 來作運算,當 thisYear 變動時, lastYear 跟 nextYear 自然也就跟著變動。
雖然 JavaFX 主打 RIA 不過基本可以看作是建立在 Java 上的新語言,所以輸出到 Console 也不是難事,只要使用 println() 或是 print() 就可以了,如果中間要加文字,只要使用「{}」將變數包起來就可以了,不用像 Java 要使用「+」來進行字串串接。
//印出變數
println(valLong);
//差別在有沒有換行
print(valLong);
//字串與變數
print("valLong is {valLong}");
如果使用 Eclipse + JavaFX plug-in 來開發的話,會在建置完後在專案資料夾內的 dist 會有 jar 檔跟 jnlp,上傳到網頁空間就可以完成佈署。
| Images 0 | ||
|---|---|---|
| No images to display in the gallery. |