JavaFX腳本語法總結(3)——其它基本型

作者:郝春利

轉貼請註明出處:http://blog.csdn.net/froole

 

JavaFX中的數值

在JavaFX腳本語言中,數值型分爲整數(Integer)和浮動小數(Number)兩種。Integer型也就是Java中的int型,32位帶有符號的整數。同樣,Number型即爲Java中的double型,其中正負符號佔用1位,指數部分11位,假數佔用52位。
以下是定義數值的例子:

var num1: Integer = 1;
var num2: Number = 1.0;

var num3 = 5; // 自動定義爲Integer
var num4 = 10.0; // 自動定義爲Number

在早期版本中,Integer可以擴展到long、java.math.BigInteger類等,但是,正是版把Integer的範圍縮小到int型。

 

有一點需要注意,可以任意將Integer型值帶入到Number型變量,但是,相反如果要將Number型值帶入到Integer,在變異的時候會有數據缺失錯誤的提示。此特徵跟Java相同。如果要轉換Number型值爲Integer值,可以使用intValue方法,如下:

var x: Integer;
var y: Number = 1.5;

x = y.intValue();

println("x: {x}");

執行結果:
x: 1

從結果可以看出,小數點以下的數值在轉換證書過程中被拋棄。

intValue也可以直接寫在數值後面,如下:
var x: Integer = 10.0.intValue();

var y: Integer = (2 + 5.5).intValue();

在上面的表達式中,2是Integer型,5.5是Number型,Integer型和Number型的計算結果爲Number型,此特點跟Java相同。

 

使用intValue轉換Number型,可能多少讓人感覺有點特別。當然,同樣的處理,也可以像Java那樣直接進行型和型的轉換。但是JavaFX腳本中型轉換的方法跟Java不同,需要使用as關鍵字,如下:
var x: Integer = 10.0 as Integer;

var y: Integer = (2 + 5.5) as Integer;

var a: Number = 20.3;
var z: Integer = a as Integer;

println("x: {x} y: {y} z: {z}");

執行結果:
x: 10 y: 7 z: 20

布爾型

布爾型用Boolean來定義。可以使用的值爲true和false。
Boolean的使用方法與Java中的boolean相同,但是,否定運算符不一樣,如下:
var x: Boolean = true;

println("not x: {not x}");

從此段代碼可以看出,否定運算符使用了not。執行之後輸出了true的相反值false。
not x: false

時間間隔

前文已經介紹,JavaFX腳本中的時間間隔型可以使用Duration。
var onemillis = 1ms;     // 1 毫秒
var onesec = 1s;             // 1 秒
var onemin = 1m;             // 1 分
var onehour = 1h;            // 1 小時

 

在被定義數值的後面加上ms、s、m或者h將被默認爲Duration行,分別表示毫秒、秒、分和小時的時間。
奈秒與天沒有可被直接定義的單位,但是可以用其他單位的時間數值代替,如下:
var onenanos = 0.001ms;     // 1 奈秒
var oneday = 24h;                 // 1 天

從上面的代碼中,可以看出,Duration型的定義可以使用小數。

不同的時間單位間可以進行對比運算,如下:
var onemillis = 1ms;         // 1 毫秒
var onesec = 1s;                         // 1 秒
var onemin = 1m;                         // 1 分
var onehour = 1h;                        // 1 小時


println("{onesec}/1000 == {onemillis} : {onesec/1000 == onemillis}");
println("{onehour} == {onemin} * 60 : {onehour == onemin*60}");

 

執行結果:
1000ms/1000 == 1ms : true
3600000ms == 60000ms * 60 : true

Void和null

Void與Java中的void相同,在方法/函數不返回任何值的情況下使用。

null不是型,是數值。他不僅可以項Java中的null一樣使用,而且,還可以如下使用:
var x: Integer[] = [];

println("x == null : {x == null}");

var text = "";

println("text == null : {text == null}");

[]相當於書組,在JavaFX腳本中被稱之爲序列。詳細的內容將在今後的文章中進行說明。此段代碼的意思爲,Integer型的序列變量x中沒有任何要素;text是一個空的文字串。
對比之後的執行結果如下:
x == null : true
text == null : true

也就是說,空的序列和空的文字串,在JavaFX都被認爲是null

待續

 

<script src="http://pagead2.googlesyndication.com/pagead/show_ads.js" type="text/javascript"></script>

轉貼請註明出處:http://blog.csdn.net/froole

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章