Cava mendukung dua jenis definisi berikut.
Definisi variabel
Cava mendukung dua definisi tipe berikut.
Variabel lokal
Variabel anggota kelas
Catatan: Cava tidak mendukung variabel kelas. Mendefinisikan variabel kelas akan menyebabkan error kompilasi. Untuk informasi lebih lanjut, lihat Cava modifiers.
Variabel lokal
Variabel tipe numerik
Definisikan variabel lokal
abertipeintdan beri nilai10.
class Example {
// ...
int test() {
int a; // <==
a = 10;
return a + 1;
}
// ...
}Definisikan variabel lokal
adengan nilai awal10.
class Example {
// ...
int test() {
int a = 10; // <==
return a + 1;
}
// ...
}Variabel objek
Setelah Anda mendefinisikan variabel objek, Anda harus menggunakan pernyataan new untuk membuat objek yang sesuai. Jika tidak, nilai variabel tersebut adalah null. Mengakses variabel null akan menyebabkan NullPointerException.
class Example {
public double PI;
Example(double customPI) {
this.PI = customPI;
}
static int main() {
Example a = new Example(3.1415926); // <==
return 0;
}
}Variabel array
Definisikan array
intbernamaadengan10elemen, diinisialisasi menjadi[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];
}
// ...
}Anda dapat menggunakan daftar inisialisasi untuk mendefinisikan dan menginisialisasi array
intdengan nilai[0..9]. Kompilator secara otomatis melakukan inferensi terhadap panjang array.
class Example {
// ...
int test() {
int[] a = new int[]{0,1,2,3,4,5,6,7,8,9};
return a[0];
}
// ...
}Buat array objek. Catatan: Setelah membuat array, Anda juga harus membuat objek untuk setiap elemennya.
class Example {
public double PI;
Example(double customPI) {
this.PI = customPI;
}
static int main() {
Example[] a = new Example[10]; // Buat array objek.
for (int i = 0; i < a.length; ++i) {
a[i] = new Example(3.1415926); // Inisialisasi setiap objek dalam array.
}
return 0;
}
}Variabel anggota kelas
Untuk informasi lebih lanjut tentang mendefinisikan dan menggunakan variabel anggota kelas, lihat Cava classes and objects.
Tipe bawaan
Cava menyediakan tipe bawaan berikut. Nilai dalam tanda kurung menunjukkan ukuran memori tipe tersebut.
boolean (1 byte)
byte (1 byte)
char (2 byte)
short (2 byte)
int (4 byte)
long (8 byte)
float (4 byte)
double (8 byte)
Perhatikan bahwa tipe char menggunakan encoding internal dengan panjang tetap 2 byte. Encoding ini mirip dengan format encoding UTF-16 milik Java, tetapi tipe char itu sendiri bukanlah tipe dengan panjang variabel.
Konversi tipe
Seperti pada kebanyakan bahasa pemrograman, tipe numerik bawaan dapat dikonversi. Kompilator menyisipkan kode untuk melakukan konversi antar tipe numerik bila diperlukan.
Konversi otomatis tipe yang kompatibel
Ketika tipe sumber dan tipe target memiliki hubungan sebagai berikut:
Rentang numerik tipe target mencakup rentang numerik tipe sumber. Hal ini terutama berlaku untuk tipe integer.
Konversi dari tipe sumber ke tipe target tidak menyebabkan kehilangan presisi numerik. Hal ini terutama berlaku untuk tipe floating-point.
Konversi tertentu, seperti dari short ke int atau dari float ke double, aman dilakukan. Kompilator secara otomatis menyisipkan kode untuk melakukan konversi tersebut:
float a = 3.14f;
double b = a;
short c = -1;
int d = c;Cava mengikuti aturan konversi tipe yang sama seperti bahasa pemrograman umum lainnya, seperti Java dan C++.
Type Casting eksplisit
Beberapa konversi tipe numerik dapat menyebabkan kehilangan presisi atau ketidaksesuaian rentang. Dalam kasus seperti itu, kompilator melaporkan error. Contohnya:
double a = ...;
float b = a; // error, risiko kehilangan presisiKompilator tidak secara otomatis melakukan konversi ini karena umumnya tidak aman. Namun, jika Anda memahami risiko yang terlibat, Anda dapat menggunakan type cast eksplisit dalam kode Anda untuk mencegah error kompilasi.
float a = 3.14f;
int b = (int)a; // Bagian pecahan dibuang. Hanya bagian integer yang dipertahankan. Ini memotong angka tersebut.Tipe kustom
Cava mendukung pendefinisian kelas dan penggunaan objek. Untuk informasi lebih lanjut, lihat Cava classes and objects.