Menu

Java Operatörleri: Aritmetik, Karşılaştırma, Mantıksal ve Atama

Java operatörlerinin nasıl çalıştığı - aritmetik, karşılaştırma, mantıksal, atama, artırma ve üçlü (ternary) operatör - ayrıca tam sayı bölmesi, öncelik ve yeni başlayanları yakalayan tuzaklar.

Bu sayfada çalıştırılabilir editörler var - düzenle, çalıştır ve sonucu anında gör.

Operatörler Ne İşe Yarar

Operatörler, yeni değerler hesaplamak için değerleri birleştiren sembollerdir. Onları zaten gayriresmî biçimde kullanıyorsunuz - + toplar, > karşılaştırır - ve Java bunları birkaç aileye ayırır: aritmetik, karşılaştırma, mantıksal, atama ve artırma ile üçlü operatör gibi birkaç özel operatör.

Operatörlerin çoğu iki değer alır (biri sembolden önce, biri sonra) ve bir sonuç üretir. İşin püf noktası, bu sonucun türünün ne olduğunu ve hangi sırayla uygulandıklarını bilmektir - yeni başlayanların tökezlediği yer de burasıdır.

Aritmetik Operatörler

Beş aritmetik operatör sayılar üzerinde çalışır: +, -, *, / ve % (kalan).

% operatörü, bölmeden sonraki kalandır: 17 % 5 sonucu 2'dir çünkü 5, 17'nin içine üç kez girer ve geriye 2 kalır. Bölünebilirliği test etmek için günlük araçtır - n % 2 == 0, "n çift mi?" kontrolünün standart halidir.

Ayrıca +'nın çift görev gördüğünü unutmayın: sayılarla toplar, ama herhangi bir tarafında bir String olduğunda metni birleştirir.

İlk satır soldan sağa okunur: "Total: " + 3 zaten bir dizedir, bu yüzden 4 metin olarak eklenir. İşlemin önce hesaplanmasını istediğinizde matematiği parantez içine alın.

Tam Sayı Bölmesi Tuzağı

Bu, en sık karşılaşılan tek sürprizdir. / operatörünün her iki işleneni de tam sayı olduğunda, Java tam sayı bölmesi yapar ve kesirli kısmı atar - yuvarlamaz, sıfıra doğru keser.

Ondalık bir sonuç almak için en az bir işleneni double yapın - ya .0 ile yazın ya da bir tarafı (double) ile dönüştürün. (double)(5 / 2) yapmak işe yaramaz, çünkü 5 / 2 tam sayı bölmesi dönüştürmeden önce zaten gerçekleşmiştir; sonucu değil, bir işleneni dönüştürmelisiniz.

Karşılaştırma Operatörleri

Karşılaştırma operatörleri evet/hayır sorusu sorar ve bir boolean döndürür. Altı tanedir: ==, !=, <, >, <=, >=.

= (atama - "bu değeri buraya koy") ile == (karşılaştırma - "bunlar eşit mi?") arasındaki farka dikkat edin. Bunları karıştırmak klasik bir hatadır.

Önemli bir uyarı: ==, nesne referanslarını karşılaştırır, içerikleri değil. Dizeler için .equals() kullanın.

int ve boolean gibi ilkel türler için ==, String gibi nesnelerin içeriğini karşılaştırırken her zaman .equals() kullanın.

Mantıksal Operatörler

Mantıksal operatörler boolean değerleri birleştirir: && (ve), || (veya) ve ! (değil). "Yeterince büyük ve bileti var" gibi koşulları bu şekilde ifade edersiniz.

&& ve ||, kısa devre yapar: Java, cevap kesinleşir kesinleşmez değerlendirmeyi durdurur. && ile, sol taraf false ise sağ taraf hiç kontrol edilmez; || ile, sol taraf true ise sağ taraf atlanır. Bu sadece bir optimizasyon değildir - güvenlik için buna güvenebilirsiniz:

if (text != null && text.length() > 0) { ... }

text değeri null ise sol taraf false olur ve text.length() hiç çağrılmaz; böylece bir NullPointerException önlenir. Sırayı tersine çevirin, program çökerdi.

Atama ve Artırma

= atama yapar, ancak Java'nın bir işlemi atamayla birleştiren bileşik atamaları da vardır: +=, -=, *=, /=, %=. Ve ++ / -- bir artırır veya azaltır.

++ iki şekilde gelir: sonek (count++) eski değeri döndürür, sonra artırır; önek (++count) önce artırır, sonra yeni değeri döndürür. Fark yalnızca sonucu aynı ifade içinde kullandığınızda önemlidir:

++ kendi satırındayken sonek ile önek arasında fark yoktur - bu yüzden hangisi daha açık okunuyorsa onu tercih edin ve artırmaları daha büyük ifadelerin içine sıkıştırmayın.

Üçlü (Ternary) Operatör

Üçlü operatör condition ? a : b, bir değer üreten kompakt bir if/else'tir: koşul true ise a'ya, aksi takdirde b'ye değerlenir.

Kısa, bu-ya-da-o tarzı atamalarda parlar. Üçlü operatörleri üçlü operatörlerin içine yuvalamaktan kaçının - bu hızla okunmaz hale gelir ve sade bir if/else daha açıktır.

Öncelik ve Parantezler

Operatörler tıpkı matematikteki gibi sabit bir sırayla uygulanır: *, /, %, + ve -'den daha güçlü bağlanır; bunlar da karşılaştırmalardan daha güçlü bağlanır; karşılaştırmalar &&'den, en son da ||'dan daha güçlü bağlanır.

Tablonun tamamını ezberlemenize gerek yok. Bir ifade aileleri karıştırdığında ya da sırayı çözmek için durup düşünmeniz gerektiğinde, parantez ekleyin - bir maliyetleri yoktur ve sonraki okuyucuya niyeti açıkça gösterirler.

Sonraki: Tür Dönüşümü (Casting)

Buradaki tuzakların birçoğu - tam sayı bölmesi, int ile double karıştırma - türlere dayanır. Sayı türleri arasında bilinçli olarak dönüşüm yapmaya casting denir ve sonraki sayfanın konusu budur.

Sıkça Sorulan Sorular

Java'da % operatörü ne yapar?

%, kalan (modulo) operatörüdür - tam sayı bölmesinden sonra geriye ne kaldığını verir. 7 % 3 sonucu 1, 10 % 2 sonucu ise 0'dır. Bölünebilirliği test etmenin (n % 2 == 0, n'in çift olduğu anlamına gelir) ve bir değeri belirli bir aralığa sığdırmanın standart yoludur.

Java'da 5 / 2 neden 2.5 yerine 2 verir?

Her iki işlenen de tam sayı olduğunda /, tam sayı bölmesi yapar ve ondalık kısmı atar - bu yüzden 5 / 2 sonucu 2'dir, 2.5 değil. 2.5 almak için en az bir işlenenin double olması gerekir: 5.0 / 2, 5 / 2.0 yazın ya da bir tarafı (double) 5 / 2 ile dönüştürün.

Java'da == ile equals() arasındaki fark nedir?

==, ilkel türleri değere göre karşılaştırır; ancak nesneler için (String dahil) referansları karşılaştırır - bellekte aynı nesne olup olmadıklarını. Nesnelerin içeriğini karşılaştırmak için .equals() kullanın. İki dizeyi == ile karşılaştırmak, metin eşleşse bile false döndürebilir; bu yüzden dizeler için her zaman "a".equals(b) kullanın.

Coddy programming languages illustration

Coddy ile kodlamayı öğren

BAŞLA