JavaFXとJavaとの違い
今回は、JavaFX Scriptの基本的な文法について、「Javaと何が違うのか」を中心に説明をしていきましょう。JavaFX Scriptは、Javaの基本的な文法をベースにして設計されています。ですから、Javaがわかれば、ある程度の応用はききます。が、細かな部分で違いがあるので注意が必要です。まずは、基本的な文法について、その相違点を整理しておきましょう。
1.文は、改行ではなくセミコロンで終わる
これは、Javaと共通していますね。JavaFX Scriptでは、文はセミコロンで区切られます。途中で改行があっても、そこでは終わりません。
2.基本型は4つだけ
Javaでは、8種類の基本型が用意されていましたが、JavaFX Scriptでは「4つ」のみです。これは、それぞれ以下のようになっています。見ればわかるように、数字関係の値は2種類だけとなり、テキストであるStringが基本型として用意されています。キャラクタ(char)に相当するものはありません。
Number――数値全般の値
Integer――整数の値
String――テキストの値
Boolean――真偽値(trueまたはfalse)
3.変数の宣言は、書き方が違う
Javaでは変数を利用する場合、変数名と型名を常に記述する必要がありましたが、JavaFX Scriptでは型名は省略することができます。JavaFX Scriptでの変数の宣言は、以下のようになります。
var 変数;
var 変数: 型名;
var 変数 = 値;
var 変数: 型名 = 値;
基本は、「var 変数」というように、varの後に変数名を指定します。型名を指定する場合は、その後に「:型名」と記述をします。方名を省略した場合、その変数に値が代入された段階で、最適な型に自動設定されます。
4.演算子は、数値のみ
数値の値(Integer、Number)の値は、「+-*/%」といった演算子を使って演算が行えます。このあたりは、Javaと同じと考えてよいでしょう。ただし、String値を+で結合するといったことはできません。演算子が使えるのは数値のみです。
5.Stringリテラルには変数が埋め込める
では、テキストを結合したいときは? これは、実は「リテラルに変数を埋め込む」ことで可能になります。JavaFX Scriptでは、テキストのリテラルは「シングルクォート」と「ダブルクォート」の両方をサポートしています。このうち、ダブルクォートでは、その中に変数やJavaFX Scriptの式などを{}記号で埋め込むことができます。例えば、変数Aと変数Bをひとつにまとめたければ、こんな具合にすればよいのです。
var C:String = "{A}{B}";
6.スクリプトは、ただ文を並べるだけでOK
Javaでは、すべてのプログラムは「クラス」として定義する必要がありました。ちょっとした処理を行うにも、まずクラスを定義し、そこにメソッドとして処理を用意しなければいけませんでした。
が、JavaFX Scriptでは、「クラス」は必須ではありません。必要がなければ、クラスなど書かなくともよいのです。ただ、やりたいことを順に書くだけでスクリプトは完成します。例えば、こんな感じです。
import java.lang.System;
var kakaku = 12800;
var zeikomi = kakaku * 1.05;
System.out.println("{kakaku}の税込み額は、{zeikomi}円です。");
これは、金額(kakaku)に消費税額を加算した金額(zeikomi)を計算し、その結果を出力する例です。見ればわかるように、使用するクラスのimportを書き、その後にただ実行する文を書いているだけですね。クラスもメソッドも不要です。
7.Javaのクラスライブラリをそのまま使える
先の例でわかるように、JavaFX Scriptでは、Javaのクラスをそのまま利用することができます。この場合は、Javaと同様、利用するクラスをimport文で宣言をしておきます。これはJavaに限らず、JavaFXのクラスライブラリを使う場合も同様です。
Javaでは、importを書かなくとも、java.langパッケージのクラスは使えましたし、また「java.lang.System.out.println」というようにパッケージ名を正確に記述すればよかったのですが、JavaFX Scriptでは、importは省略できません。常にクラスはimportしておく必要があります。