Cava prend en charge deux types de définitions.
Définitions des variables
Cava prend en charge les deux définitions de type suivantes.
Variables locales
Variables membres de classe
Remarque : Cava ne prend pas en charge les variables de classe. La définition d'une variable de classe provoque une erreur de compilation. Pour plus d'informations, consultez la rubrique Modificateurs Cava.
Variables locales
Variables de type numérique
Définissez une variable locale
ade typeintet attribuez-lui la valeur10.
class Example {
// ...
int test() {
int a; // <==
a = 10;
return a + 1;
}
// ...
}
Définissez une variable locale
aavec la valeur initiale10.
class Example {
// ...
int test() {
int a = 10; // <==
return a + 1;
}
// ...
}
Variables d'objet
Après avoir défini une variable d'objet, utilisez l'instruction new pour créer l'objet correspondant. Sinon, la valeur de la variable est null. L'accès à une variable nulle provoque une exception NullPointerException.
class Example {
public double PI;
Example(double customPI) {
this.PI = customPI;
}
static int main() {
Example a = new Example(3.1415926); // <==
return 0;
}
}
Variables de tableau
Définissez un tableau
intnomméacontenant10éléments, initialisé avec les valeurs[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];
}
// ...
}
Utilisez une liste d'initialisation pour définir et initialiser un tableau
intavec les valeurs[0..9]. Le compilateur déduit automatiquement la longueur du tableau.
class Example {
// ...
int test() {
int[] a = new int[]{0,1,2,3,4,5,6,7,8,9};
return a[0];
}
// ...
}
Créez un tableau d'objets. Remarque : après la création du tableau, créez également un objet pour chacun de ses éléments.
class Example {
public double PI;
Example(double customPI) {
this.PI = customPI;
}
static int main() {
Example[] a = new Example[10]; // Create an object array.
for (int i = 0; i < a.length; ++i) {
a[i] = new Example(3.1415926); // Initialize each object in the array.
}
return 0;
}
}
Variables membres de classe
Pour plus d'informations sur la définition et l'utilisation des variables membres de classe, consultez la rubrique Classes et objets Cava.
Types intégrés
Cava fournit les types intégrés suivants. La valeur entre parenthèses indique la taille mémoire du type.
boolean (1 octet)
byte (1 octet)
char (2 octets)
short (2 octets)
int (4 octets)
long (8 octets)
float (4 octets)
double (8 octets)
Le type char utilise un encodage interne fixe de 2 octets. Cet encodage est similaire au format d'encodage UTF-16 de Java, mais le type char lui-même n'est pas de longueur variable.
Conversions de type
Comme dans la plupart des langages, les types numériques intégrés peuvent être convertis. Le compilateur insère le code nécessaire pour effectuer les conversions entre les types numériques lorsque cela est approprié.
Conversion automatique des types compatibles
Lorsque les types source et cible entretiennent la relation suivante :
La plage numérique du type cible inclut la plage numérique du type source. Cela s'applique principalement aux types entiers.
La conversion du type source vers le type cible n'entraîne aucune perte de précision numérique. Cela s'applique principalement aux types à virgule flottante.
Certaines conversions, telles que de short vers int ou de float vers double, sont sûres. Le compilateur insère automatiquement le code pour effectuer ces conversions :
float a = 3.14f;
double b = a;
short c = -1;
int d = c;
Cava suit les mêmes règles de conversion de type que d'autres langages de programmation courants, tels que Java et C++.
Transtypage explicite
Certaines conversions de types numériques peuvent entraîner une perte de précision ou une incompatibilité de plage. Dans ce cas, le compilateur signale une erreur. Par exemple :
double a = ...;
float b = a; // error, risk of precision loss
Le compilateur n'effectue pas automatiquement ces conversions car elles sont généralement dangereuses. Toutefois, si vous comprenez les risques impliqués, utilisez un transtypage explicite dans votre code pour éviter une erreur du compilateur.
float a = 3.14f;
int b = (int)a; // The fractional part is discarded. Only the integer part is kept. This truncates the number.
Types personnalisés
Cava prend en charge la définition de classes et l'utilisation d'objets. Pour plus d'informations, consultez la rubrique Classes et objets Cava.