operatordasarPemula4 mnt baca

Operator di Dart

Operator aritmatika, perbandingan, logika, dan assignment untuk mengolah data.

Operator aritmatika

Yang paling sering dipakai sehari-hari:

dart
void main() {
  int a = 10;
  int b = 3;

  print(a + b); // 13 penjumlahan
  print(a - b); // 7 pengurangan
  print(a * b); // 30 perkalian
  print(a / b); // 3.333... pembagian (hasil double)
  print(a ~/ b); // 3 pembagian bulat
  print(a % b); // 1 sisa bagi (modulo)
}

Modulo (%) sangat berguna, mis. cek genap/ganjil: angka % 2 == 0 berarti genap.

Operator perbandingan

Menghasilkan boolean, dipakai di kondisi:

dart
void main() {
  int umur = 17;
  print(umur > 16);  // true
  print(umur >= 18); // false
  print(umur == 17); // true
  print(umur != 17); // false
}

Ingat: == untuk membandingkan, = untuk mengisi nilai. Tertukar keduanya adalah bug klasik pemula di semua bahasa.

Operator logika

Menggabungkan beberapa kondisi:

dart
void main() {
  int umur = 17;
  bool punyaKTP = false;

  print(umur >= 17 && punyaKTP); // false (AND: keduanya harus true)
  print(umur >= 17 || punyaKTP); // true (OR: salah satu true cukup)
  print(!punyaKTP);              // true (NOT: membalik)
}

Dart memakai short-circuit evaluation: pada &&, kalau kondisi kiri sudah false, kanan tidak dicek. Pada ||, kalau kiri sudah true, kanan dilewati. Ini bisa dimanfaatkan, mis. user != null && user.nama == 'Rizky' aman karena cek null dulu.

Operator assignment ringkas

dart
void main() {
  int skor = 10;
  skor += 5;  // sama dengan skor = skor + 5  -> 15
  skor -= 3;  // 12
  skor *= 2;  // 24
  skor ~/= 5; // 4 (pembagian bulat)
  print(skor);

  int i = 0;
  i++; // tambah 1 -> 1
  i--; // kurang 1 -> 0
  print(i);
}

Operator khusus Dart: ?? dan ?.

Dua operator ini jadi andalan programmer Dart:

dart
void main() {
  String? nama; // boleh null (dibahas detail di modul null safety)
  String tampil = nama ?? 'Tamu'; // kalau null, pakai 'Tamu'
  print(tampil); // Tamu

  String? teks;
  print(teks?.length); // null, tidak error
  // print(teks.length); // ERROR kalau teks null
}

Operator ?? artinya "pakai nilai kiri, tapi kalau null pakai kanan". Operator ?. artinya "panggil method ini hanya kalau objeknya tidak null".

Catatan teknis: i++ vs ++i beda perilaku kalau dipakai di dalam ekspresi. print(i++) mencetak nilai lama lalu menambah, sedangkan print(++i) menambah dulu baru mencetak. Untuk menghindari bingung, pakai increment di baris tersendiri, jangan di dalam ekspresi kompleks.

Urutan prioritas

Seperti matematika: perkalian dan pembagian dikerjakan sebelum penjumlahan. Kalau ragu, pakai tanda kurung, tidak ada salahnya dan kode jadi lebih jelas:

dart
void main() {
  int hasil = 2 + 3 * 4;     // 14, bukan 20
  int jelas = (2 + 3) * 4;   // 20
  print('$hasil vs $jelas');
}