Cava は、以下の 2 種類の定義をサポートしています。
変数定義
Cava は、以下の 2 種類の変数定義をサポートしています。
ローカル変数
クラスメンバー変数
注意:Cava はクラス変数をサポートしていません。クラス変数を定義すると、コンパイルエラーが発生します。詳細については、「Cava の修飾子」をご参照ください。
ローカル変数
数値型の変数
int型のローカル変数aを定義し、値10を割り当てます。
class Example {
// ...
int test() {
int a; // <== 変数 a を宣言
a = 10;
return a + 1;
}
// ...
}初期値
10を持つローカル変数aを定義します。
class Example {
// ...
int test() {
int a = 10; // <== 変数を定義と同時に初期化
return a + 1;
}
// ...
}オブジェクト変数
オブジェクト変数を定義した後、new 文を使用して対応するオブジェクトを作成する必要があります。そうしない場合、変数の値は null になります。null 変数にアクセスすると、NullPointerException が発生します。
class Example {
public double PI;
Example(double customPI) {
this.PI = customPI;
}
static int main() {
Example a = new Example(3.1415926); // <== new 文でオブジェクトを作成
return 0;
}
}配列変数
10個の要素を持つint配列aを定義し、[0..9]で初期化します。
class Example {
// ...
int test() {
int[] a = new int[10];
for (int i = 0; i < a.length; ++i) {
a[i] = i;
}
return a[0];
}
// ...
}初期化リストを使用して、値
[0..9]を持つint配列を定義して初期化できます。コンパイラは配列の長さを自動的に推測します。
class Example {
// ...
int test() {
int[] a = new int[]{0,1,2,3,4,5,6,7,8,9};
return a[0];
}
// ...
}オブジェクトの配列を作成します。注意:配列を作成した後、その各要素のオブジェクトも作成する必要があります。
class Example {
public double PI;
Example(double customPI) {
this.PI = customPI;
}
static int main() {
Example[] a = new Example[10]; // オブジェクト配列を作成します。
for (int i = 0; i < a.length; ++i) {
a[i] = new Example(3.1415926); // 配列の各要素を初期化します。
}
return 0;
}
}クラスメンバー変数
クラスメンバー変数の定義と使用方法の詳細については、「Cava のクラスとオブジェクト」をご参照ください。
組み込み型
Cava は以下の組み込み型を提供します。括弧内の値は、その型のメモリサイズを示します。
ブール型 (1 バイト)
byte (1 バイト)
char (2 バイト)
short (2 バイト)
int (4 バイト)
long (8 バイト)
フロート (4 バイト)
double (8 バイト)
なお、char 型は固定長 2 バイトの内部エンコーディングを使用します。このエンコーディングは Java の UTF-16 エンコーディング形式に似ていますが、char 型自体は可変長ではありません。
型変換
ほとんどの言語と同様に、組み込みの数値型は変換できます。コンパイラは、必要に応じて数値型間の変換を実行するコードを挿入します。
互換性のある型の自動変換
ソース型とターゲット型に以下の関係がある場合:
ターゲット型の数値範囲が、ソース型の数値範囲を含みます。これは主に整数型に適用されます。
ソース型からターゲット型に変換しても、数値の精度は損なわれません。これは主に浮動小数点型に適用されます。
short から int、または float から double への変換といった特定の変換は安全です。コンパイラは、これらの変換を実行するコードを自動的に挿入します:
float a = 3.14f;
double b = a;
short c = -1;
int d = c;Cava は、Java や C++ などの他の一般的なプログラミング言語と同じ型変換ルールに従います。
明示的な型キャスト
一部の数値型の変換では、精度の損失や範囲の不一致が発生する可能性があります。このような場合、コンパイラはエラーを出力します。例:
double a = ...;
float b = a; // エラー、精度の損失のリスクこれらの変換は一般的に安全ではないため、コンパイラは自動的には実行しません。ただし、関連するリスクを理解している場合は、コードで明示的な型キャストを使用してコンパイラエラーを抑制することができます。
float a = 3.14f;
int b = (int)a; // 小数部は破棄されます。整数部のみが残ります。これにより、数値が切り捨てられます。ユーザー定義型
Cava は、クラスの定義とオブジェクトの使用をサポートしています。詳細については、「Cava のクラスとオブジェクト」をご参照ください。