Dart mendukung semua operator yang tercantum dalam tabel di bawah, tabel diurutkan berdasarkan prioritas dari tertinggi ke terendah
| Kategori | Operator | Asosiatifitas |
|---|---|---|
| Operator unary postfix | expr++ expr-- () [] ?[] . ?. ! | Tidak ada |
| Operator unary prefix | - expr ! expr ~ expr ++ expr -- expr await expr | Tidak ada |
| Perkalian dan pembagian | * / % ~/ | Kiri |
| Penjumlahan dan pengurangan | + - | Kiri |
| Pergeseran bit | << >> >>> | Kiri |
| Bitwise AND | & | Kiri |
| Bitwise XOR | ^ | Kiri |
| Bitwise OR | | | Kiri |
| Relasional dan pengecekan tipe | >= > <= < as is is! | Tidak ada |
| Pengecekan kesamaan | == != | Tidak ada |
| Logika AND | && | Kiri |
| Logika OR | || | Kiri |
| Operator penggabungan null | ?? | Kiri |
| Operator ternary bersyarat | expr1 ? expr2 : expr3 | Kanan |
| Operator kaskade | .. ?.. | Kiri |
| Operator penugasan | = *= /= += -= &= ^= dll. | Kanan |
| Operator spread (lihat catatan) | ... ...? | Tidak ada |
Gunakan operator di atas bersama operand untuk membentuk ekspresi perhitungan
Contoh sederhana:
a++
a + b
a = b
a == b
c ? a : b
a is T
Berikut contoh lengkap:
void main() {
// 1. Postfix increment a++
int a = 10;
print("1. Postfix increment a++");
print("Sebelum increment a = $a");
int temp = a++; // Ambil nilai dulu, baru tambah satu
print("temp (nilai yang diambil) = $temp");
print("Setelah increment a = $a\n");
// 2. Ekspresi penjumlahan a + b
int b = 20;
int sum = a + b;
print("2. Penjumlahan a + b");
print("$a + $b = $sum\n");
// 3. Ekspresi penugasan a = b
a = b;
print("3. Penugasan a = b");
print("Setelah penugasan a = $a\n");
// 4. Pengecekan sama a == b
bool isEqual = a == b;
print("4. Pengecekan sama a == b");
print("Hasil a == b: $isEqual\n");
// 5. Ekspresi ternary c ? a : b
int c = 5;
String result = c > 0 ? "c bilangan positif" : "c bilangan negatif atau nol";
print("5. Operator ternary c ? a : b");
print("Cek c>0: $result\n");
// 6. Pengecekan tipe a is T
dynamic testVal = 100;
print("6. Pengecekan tipe a is T");
print("testVal is int: ${testVal is int}");
print("testVal is String: ${testVal is String}");
}
Code language: Dart (dart)
Salin kode di atas lalu jalankan dengan perintah: dart run
Aturan inti prioritas operator
1. Logika urutan prioritas
Tabel operator prioritas menurun dari atas ke bawah: operator baris atas memiliki prioritas lebih tinggi dan dieksekusi duluan.
Contoh tanda > berarti “prioritas lebih tinggi”, bukan perbandingan nilai.
Urutan eksekusi: modulus % > pengecekan sama == > logika AND &&
Pemecahan eksekusi ekspresi n % i == 0 && d % i == 0:
- Pertama jalankan
n % i,d % i(%prioritas tertinggi) - Kemudian dua perbandingan
== - Terakhir jalankan logika AND
&&

2 Fungsi tanda kurung
Tanda kurung ((n % i == 0) && (d % i == 0)) hanya meningkatkan keterbacaan kode, tidak mengubah urutan eksekusi asli;
Versi tanpa kurung n % i == 0 && d % i == 0 berjalan berdasarkan prioritas bawaan, kedua kode memiliki logika dan hasil yang sama persis;
Catatan tambahan: Tanda kurung hanya mengubah urutan eksekusi jika perlu melanggar prioritas default.
void main() {
int n = 10;
int d = 20;
int i = 2;
// Cara 1: pakai kurung, lebih mudah dibaca
if ((n % i == 0) && (d % i == 0)) {
print("Cara 1: dapat dibagi habis");
}
// Cara 2: tanpa kurung, pakai prioritas bawaan, hasil sama persis
if (n % i == 0 && d % i == 0) {
print("Cara 2: dapat dibagi habis");
}
}
Hasil eksekusi:
Cara 1: dapat dibagi habis
Cara 2: dapat dibagi habis