Eğitim Portalı/Java/Operatörler
Java01-java/89-operatorler

Operatörler

Operatörler, değerler üzerinde işlem yapan sembollerdir: toplama, karşılaştırma, mantıksal birleştirme... Programlamanın en temel yapı taşlarıdır ve her satırda kullanılırlar. Bu konu, Java operatörlerini kategori kat…

Operatörler

Operatörler, değerler üzerinde işlem yapan sembollerdir: toplama, karşılaştırma, mantıksal birleştirme... Programlamanın en temel yapı taşlarıdır ve her satırda kullanılırlar. Bu konu, Java operatörlerini kategori kategori ele alır ve özellikle yeni başlayanların takıldığı noktaları (int bölme, önek/sonek, kısa devre, öncelik) netleştirir.

Aritmetik operatörler

+  -  *  /  %        // toplama, çıkarma, çarpma, bölme, mod (kalan)

int bölme tuzağı: 17 / 5 == 3 (ondalık atılır!). Ondalık için en az bir operand double olmalı (topic 86). % (mod) kalanı verir: 17 % 5 == 2 — çift/tek kontrolü, döngüsel indeks gibi işlerde çok kullanılır.

Artırma/azaltma: ++ ve --

Önek (++x) ve sonek (x++) farklıdır:

int x = 5; System.out.println(x++);  // 5 yazar, SONRA x=6 (önce kullan)
int y = 5; System.out.println(++y);  // 6 yazar (önce artır)

Atama operatörleri

=  +=  -=  *=  /=  %=        // a += b  ==  a = a + b

İlişkisel (karşılaştırma) operatörler

==  !=  <  >  <=  >=         // sonuç boolean

Tuzak: Nesnelerde == referansı karşılaştırır, içeriği değil. İçerik için .equals() kullan (String, wrapper'lar — topic 76).

Örnek 1 (./Ornek1.java) aritmetik, atama ve ilişkisel operatörleri gösterir.

Mantıksal operatörler ve kısa devre

&&  (ve)    ||  (veya)    !  (değil)

Kısa devre (short-circuit) çok önemlidir: && ilk operand false ise ikinciyi değerlendirmez; || ilk operand true ise ikinciyi değerlendirmez. Bu hem performans hem de güvenlik sağlar:

if (s != null && s.length() > 0) { ... }   // s null ise length() ÇAĞRILMAZ -> NPE önlenir

Örnek 2 (./Ornek2.java) kısa devreyi (yan etkili metotlarla) gösterir.

Üçlü (ternary) operatör

kosul ? a : b — bir değer döndüren mini if-else:

String durum = (yas >= 18) ? "yetişkin" : "reşit değil";
int max = (a > b) ? a : b;

Kısa koşullu atamalar için idealdir; ama iç içe üçlü operatörler okunabilirliği bozar (o zaman if-else kullan).

Operatör önceliği (precedence)

Operatörler belirli bir sırayla değerlendirilir:

() > ++/-- /! > * / % > + - > < > <= >= > == != > && > || > ?: > = += ...
2 + 3 * 4 == 14    // * önce
(2 + 3) * 4 == 20  // parantez önceliği değiştirir

Altın kural: Önceliği ezberlemeye çalışma; şüphedeysen parantez kullan. Parantez hem doğruluğu garanti eder hem okunabilirliği artırır.

Diğer operatörler

  • instanceof: Tip kontrolü (+ pattern matching, topic 86).
  • Bit operatörleri (& | ^ ~ << >> >>>): Bit düzeyinde — sonraki konu (topic 90).
  • + (String): İki String'i veya String+değeri birleştirir ("x" + 5).

Özet

Java operatörlerini kategori kategori öğrendik: aritmetik (int bölme/mod tuzağı), önek/sonek ++/--, atama ve ilişkisel (Örnek 1); mantıksal operatörler, kısa devre (güvenlik!), üçlü operatör ve öncelik ("şüphede parantez"; Örnek 2). Sırada, bit düzeyinde çalışan güçlü ama az bilinen operatörler: bitwise operatörler.

Kod Örnekleri(2)

Ornek1

çalıştırılabilir
Ornek1.java
1// Ornek1: Aritmetik, atama ve ilişkisel operatörler.
2// Çalıştırma: java Ornek1.java
3public class Ornek1 {
4
5    public static void main(String[] args) {
6        // ARİTMETİK: + - * / %
7        int a = 17, b = 5;
8        System.out.println("17 + 5 = " + (a + b));
9        System.out.println("17 - 5 = " + (a - b));
10        System.out.println("17 * 5 = " + (a * b));
11        System.out.println("17 / 5 = " + (a / b) + "  (int bölme -> 3, ondalık atılır)");
12        System.out.println("17 % 5 = " + (a % b) + "  (kalan / mod)");
13
14        // ARTIRMA/AZALTMA: ++ -- (önek vs sonek FARKI)
15        int x = 5;
16        System.out.println("\nx=5; x++ -> " + (x++) + " (önce kullan, sonra artır), şimdi x=" + x);
17        int y = 5;
18        System.out.println("y=5; ++y -> " + (++y) + " (önce artır, sonra kullan), şimdi y=" + y);
19
20        // ATAMA operatörleri: = += -= *= /= %=
21        int sayac = 10;
22        sayac += 5;  System.out.println("\n10 += 5 -> " + sayac);
23        sayac *= 2;  System.out.println("    *= 2 -> " + sayac);
24        sayac %= 7;  System.out.println("    %= 7 -> " + sayac);
25
26        // İLİŞKİSEL (karşılaştırma): == != < > <= >=  (sonuç boolean)
27        System.out.println("\n7 > 3  : " + (7 > 3));
28        System.out.println("7 == 7 : " + (7 == 7));
29        System.out.println("7 != 3 : " + (7 != 3));
30
31        System.out.println("""
32
33                --- Aritmetik, atama, ilişkisel ---
34                Aritmetik: + - * / % (mod=kalan). int/int bölme ondalığı ATAR (17/5=3).
35                ++/-- : önek (++x) önce artırır; sonek (x++) önce kullanır sonra artırır.
36                Atama: =, ve kısa hali += -= *= /= %= (a += b  ==  a = a + b).
37                İlişkisel: == != < > <= >= -> boolean döndürür (koşullarda kullanılır).
38                NOT: nesne eşitliğinde == referansa bakar; içerik için .equals() (topic 76).""");
39    }
40}
Çıktı yerel JDK 21 ile yakalandı — tarayıcıda JVM çalışmaz.

Ornek2

çalıştırılabilir
Ornek2.java
1// Ornek2: Mantıksal operatörler, kısa devre (short-circuit), üçlü operatör ve öncelik.
2// Çalıştırma: java Ornek2.java
3public class Ornek2 {
4
5    static boolean kontrol(String ad, boolean deger) {
6        System.out.println("    (" + ad + " değerlendirildi)");
7        return deger;
8    }
9
10    public static void main(String[] args) {
11        // MANTIKSAL: && (ve), || (veya), ! (değil) — boolean üzerinde.
12        System.out.println("true && false = " + (true && false));
13        System.out.println("true || false = " + (true || false));
14        System.out.println("!true = " + (!true));
15
16        // KISA DEVRE (short-circuit): && ilk operand false ise İKİNCİYİ DEĞERLENDİRMEZ.
17        System.out.println("\n&& kısa devre (ilk false -> ikinci çalışmaz):");
18        boolean r1 = kontrol("A", false) && kontrol("B", true);  // B çalışmaz
19        System.out.println("  sonuç: " + r1);
20
21        System.out.println("|| kısa devre (ilk true -> ikinci çalışmaz):");
22        boolean r2 = kontrol("C", true) || kontrol("D", true);   // D çalışmaz
23        System.out.println("  sonuç: " + r2);
24        // Pratik fayda: null güvenliği -> (s != null && s.length() > 0)
25
26        // ÜÇLÜ (ternary) operatör: koşul ? doğruysa : yanlışsa  (mini if-else ifadesi)
27        int yas = 20;
28        String durum = (yas >= 18) ? "yetişkin" : "reşit değil";
29        System.out.println("\nÜçlü: yas=" + yas + " -> " + durum);
30        int max = (7 > 3) ? 7 : 3;
31        System.out.println("max(7,3) = " + max);
32
33        // ÖNCELİK (precedence): * / %, + -'den ÖNCE; karşılaştırma mantıksaldan önce.
34        System.out.println("\n2 + 3 * 4 = " + (2 + 3 * 4) + "  (* önce -> 14, parantezsiz)");
35        System.out.println("(2 + 3) * 4 = " + ((2 + 3) * 4) + "  (parantez önceliği değiştirir)");
36
37        System.out.println("""
38
39                --- Mantıksal, kısa devre, üçlü, öncelik ---
40                Mantıksal: && (ve), || (veya), ! (değil).
41                KISA DEVRE: && ilk false -> ikinciyi atlar; || ilk true -> ikinciyi atlar.
42                  Faydası: hem performans hem GÜVENLİK -> (s != null && s.isEmpty()) NPE'yi önler.
43                Üçlü (?:): 'kosul ? a : b' — bir DEĞER döndüren mini if-else.
44                Öncelik: * / % > + - > karşılaştırma > && > || ; ŞÜPHEDEYSEN PARANTEZ kullan (okunabilirlik).""");
45    }
46}
Çıktı yerel JDK 21 ile yakalandı — tarayıcıda JVM çalışmaz.