Cava admite los siguientes dos tipos de definiciones.
Definición de variables
Cava admite las siguientes dos definiciones de tipos.
Variables locales
Variables miembro de clase
Nota: Cava no admite variables de clase. Definir una variable de clase provoca un error de compilación. Para obtener más información, consulte Cava modifiers.
Variables locales
Variables de tipo numérico
Defina una variable local
ade tipointy asígnele el valor10.
class Example {
// ...
int test() {
int a; // <==
a = 10;
return a + 1;
}
// ...
}
Defina una variable local
acon el valor inicial10.
class Example {
// ...
int test() {
int a = 10; // <==
return a + 1;
}
// ...
}
Variables de objeto
Después de definir una variable de objeto, debe utilizar la instrucción new para crear el objeto correspondiente. De lo contrario, el valor de la variable será null. Acceder a una variable nula provoca una 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 arreglo
Defina un arreglo
intllamadoacon10elementos, inicializado con los valores[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];
}
// ...
}
Puede utilizar una lista de inicialización para definir e inicializar un arreglo
intcon los valores[0..9]. El compilador infiere automáticamente la longitud del arreglo.
class Example {
// ...
int test() {
int[] a = new int[]{0,1,2,3,4,5,6,7,8,9};
return a[0];
}
// ...
}
Cree un arreglo de objetos. Nota: Después de crear el arreglo, también debe crear un objeto para cada uno de sus elementos.
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 miembro de clase
Para obtener más información sobre cómo definir y utilizar variables miembro de clase, consulte Cava classes and objects.
Tipos integrados
Cava proporciona los siguientes tipos integrados. El valor entre paréntesis indica el tamaño de memoria del tipo.
boolean (1 byte)
byte (1 byte)
char (2 bytes)
short (2 bytes)
int (4 bytes)
long (8 bytes)
float (4 bytes)
double (8 bytes)
Tenga en cuenta que el tipo char utiliza una codificación interna de longitud fija de 2 bytes. Esta codificación es similar al formato de codificación UTF-16 de Java, pero el tipo char en sí no tiene longitud variable.
Conversiones de tipos
Al igual que en la mayoría de los lenguajes, los tipos numéricos integrados pueden convertirse. El compilador inserta código para realizar conversiones entre tipos numéricos cuando corresponde.
Conversión automática de tipos compatibles
Cuando los tipos de origen y destino tienen la siguiente relación:
El rango numérico del tipo de destino incluye el rango numérico del tipo de origen. Esto aplica principalmente a los tipos enteros.
La conversión del tipo de origen al tipo de destino no provoca una pérdida de precisión numérica. Esto aplica principalmente a los tipos de punto flotante.
Ciertas conversiones, como de short a int o de float a double, son seguras. El compilador inserta automáticamente código para realizar estas conversiones:
float a = 3.14f;
double b = a;
short c = -1;
int d = c;
Cava sigue las mismas reglas de conversión de tipos que otros lenguajes de programación comunes, como Java y C++.
Conversión explícita de tipos
Algunas conversiones de tipos numéricos pueden causar una pérdida de precisión o una discrepancia de rango. En tales casos, el compilador reporta un error. Por ejemplo:
double a = ...;
float b = a; // error, risk of precision loss
El compilador no realiza estas conversiones automáticamente porque generalmente no son seguras. Sin embargo, si comprende los riesgos implicados, puede utilizar una conversión explícita de tipos en su código para evitar un error de compilación.
float a = 3.14f;
int b = (int)a; // The fractional part is discarded. Only the integer part is kept. This truncates the number.
Tipos personalizados
Cava admite la definición de clases y el uso de objetos. Para obtener más información, consulte Cava classes and objects.