Variabel

Klasifikasi Tipe Nilai dan Tipe Referensi

Tipe bawaan yang sudah didefinisikan

KategoriTipe yang termasuk
Tipe Nilai (Angka dasar / Boolean / Karakter)Bilangan bulat bertanda: sbyte, short, int, long
Bilangan bulat tak bertanda: byte, ushort, uint, ulong
Titik mengambang / presisi tinggi: float, double, decimal
Boolean: bool
Karakter: char
Tipe Referensi (Referensi bawaan)object (kelas dasar semua tipe), string, dynamic

Tipe buatan pengguna

KategoriTipe
Tipe Nilaistruct (struktur), enum (enumerasi)
Tipe Referensiclass, interface, delegate, array (larik)

Sesuai penjelasan di pertemuan sebelumnya, data tipe referensi pasti disimpan di heap. Sedangkan data tipe nilai bisa tersimpan di heap ataupun di stack.

Bagian referensi dari tipe referensi bisa ditempatkan di heap, bisa juga di stack.

Apakah variabel tipe nilai atau bagian referensi tipe referensi berada di heap atau stack, bergantung apakah variabel tersebut merupakan anggota tipe atau variabel lokal di dalam fungsi.


Empat Jenis Variabel

Jenis VariabelDefinisi dan Fungsi
Variabel Lokal Local variableData sementara di dalam metode, bukan anggota tipe;
Disimpan di stack
Tidak diinisialisasi secara otomatis
Bidang FieldData yang terikat pada kelas / struktur, merupakan anggota tipe;
Bidang kelas disimpan di heap
Bidang struktur mengikuti tempat penyimpanan struktur;
Diinisialisasi secara otomatis
Parameter ParameterVariabel sementara untuk argumen metode, bukan anggota tipe;
Disimpan di stack
Tidak diinisialisasi secara otomatis
Elemen Larik Array elementSatu data di dalam larik;
Semua ditempatkan di heap
Diinisialisasi secara otomatis

Inisialisasi otomatis berarti kompiler akan memberikan nilai awal bawaan pada variabel meskipun pemrogram tidak menetapkan nilai awal secara manual.

Ringkasan yang lebih sederhana

Jenis VariabelTempat PenyimpananInisialisasi Otomatis
Variabel LokalStack / Stack + HeapTidak
Bidang KelasHeapYa
Bidang StrukturStack / HeapYa
Parameter MetodeStackTidak
Elemen LarikHeapYa

Deklarasi Variabel

Format:Tipe NamaVariabel;

int var2;Code language: C# (cs)

Kode di atas berfungsi mendeklarasikan variabel dan menyelesaikan dua hal utama:

  1. Memberitahu kompiler bahwa var2 adalah variabel bertipe int dengan nama var2.
  2. Kompiler akan mengalokasikan ruang memori. Tempat alokasi heap atau stack bergantung pada konteks, apakah variabel ini variabel lokal, parameter, bidang, dan sebagainya.

Inisialisator Variabel (Initializer)

Sintaks:Tipe NamaVariabel = NilaiAwal;

Contoh:int var2 = 17;

Inisialisator adalah fitur kompiler untuk membantu menginisialisasi variabel. Beberapa variabel wajib diinisialisasi secara eksplisit di kode, sedangkan variabel lain bisa diserahkan kepada inisialisator untuk diproses otomatis.

Variabel lokal yang belum diinisialisasi memiliki nilai tidak terdefinisi, akan menimbulkan galat kompilasi dan tidak dapat digunakan langsung

Variabel yang mendukung inisialisasi otomatis seperti bidang dan elemen larik akan diberikan nilai bawaan: tipe angka bernilai 0, tipe referensi bernilai null.

Silakan lihat contoh berikut:

class Program
{
    static void Main(string[] args)
    {
        int times = 100;
        Person person = new Person();
    }
}


class Person
{
    public int age;
}   
Code language: C# (cs)

Contoh sederhana ini mendeklarasikan variabel tipe nilai times dan variabel tipe referensi person di fungsi Main. Di dalam tipe referensi terdapat sebuah bidang bernama age.

age tidak diberi nilai awal, sedangkan times kita berikan nilai awal secara manual.

Kode ini dapat dikompilasi dengan normal.

Jika kita menghapus nilai awal 100 dari times dan menulisnya seperti berikut

Garis bergelombang merah akan muncul di bawah variabel dan kode tidak bisa dikompilasi.

Jika dipaksa kompilasi, pesan galat akan muncul

Jendela daftar galat akan menampilkan detail kesalahan

Catatan: Galat hanya muncul jika variabel times digunakan di dalam kode. Jika variabel tidak pernah dipanggil, tidak akan ada galat dan tetap bisa dikompilasi.

class Program
{
    static void Main(string[] args)
    {
        int times;
        
        Person person = new Person();
    }
}
Code language: C# (cs)

Berbeda dengan bidang di dalam tipe, contohnya age di kelas Person berikut. Tanpa nilai awal, kode tetap bisa dikompilasi dan dijalankan.

class Program
{
    static void Main(string[] args)
    {
        int times = 100;
        Console.WriteLine(times);

        Person person = new Person();
        Console.WriteLine(person.age);
    }
}


class Person
{
    public int age;
}   
Code language: C# (cs)

Anda akan melihat keluaran bernilai 0. Karena age merupakan bidang anggota kelas tanpa inisialisasi manual, inisialisator akan memberinya nilai bawaan. Nilai bawaan int adalah 0, setiap tipe memiliki nilai bawaan yang berbeda.

Deklarasi Beberapa Variabel Dalam Satu Baris

  1. Satu baris hanya boleh mendeklarasikan variabel dengan tipe yang sama
  2. Nama variabel dipisahkan koma, dapat mencampur variabel yang sudah diinisialisasi dan belum diinisialisasi;
  3. Dilarang mencampur beberapa tipe data dalam satu baris.
// Valid
int var3 = 7, var4, var5 = 3;
double var6, var7 = 6.52;

// Tidak valid! Mencampur int dan float
int var8, float var9;
Code language: JavaScript (javascript)

Menggunakan Nilai Variabel

Cukup tuliskan nama variabel untuk membaca nilai yang tersimpan di memori:

Console.WriteLine("{0}", var2);Code language: JavaScript (javascript)

Variabel

Tinggalkan Balasan

Alamat email Anda tidak akan dipublikasikan. Ruas yang wajib ditandai *