Sponsor Reklam 


01.10.2008 (07:03)

 Java'da Boolean Mantıksal Operatörler 
Boolean mantıksal operatörleri (Boolean Logical Operators) şunlardır:

&  Mantıksal AND (Logical AND)
|  Mantıksal OR (Logical OR)
^  Mantıksal XOR (Logical Exclusive OR)
|| Kısa devre OR (The Short-Circuit OR)
&& Kısa devre AND (The Short-Circuit AND)
!  Mantıksal NOT (Logical NOT)
&= AND ataması (AND Assignment)
|= OR ataması (OR Assignment)
^= XOR ataması (XOR Assignment)
== Eşittir (Equal to)
!=  Eşit değildir (Not Equal to)
?: Üçlü if-then-else (The If-Then-Else Operatror)

Kısa devre operatörlerinin avantajı ilk operand'daki boolean değer incelenir daha sonra ikinci operand'a geçilir. Yani aynı anda inceleme yapılmaz. Kısa devre AND (The Short-Circuit AND)'de ilk operand false ise ikinci operand hiç değerlendirilmeyecektir. Sonuç false olacaktır. Yani sıfır (false) ile neyi AND'lersek AND'leyelim sonuç sıfır (false) olur. Aynı şekilde kısa devre OR (The Short-Circuit OR)'da ilk operand true ise ikinci operand'a bakmadan sonuç true döndürülür. 1 (true)'le de neyi OR'larsak OR'layalım sonuç 1 (true) olacaktır. Temel mantık budur.

Şu örnekte bunun avantajını görebiliriz:

int pay = 5;    //numerator
int payda = 0; // denominator

if ((payda != 0) && (pay / payda > 0)) {
  // İşlem yap
}

Buradaki pay/payda sonucunun sıfırdan büyük olması halinde if'in içine girilerek işlem yapılabilecektir. Ancak burada payda'nın sıfır olma durumunda karşılaşabileceğimiz sıfıra bölme hatası (ArithmeticException) payda'nın sıfırdan farlı olma şartıyla (payda != 0) ve && kısa devre AND operatörüyle sağlanmıştır. Eğer payda sıfır olursa ilk boolean ifade false olacak ve hataya yol açabilecek ikinci yer hiç incelenmeyecek ve if'e girilmeyecektir. Bu nedenle kısa devre operatörlerini kullanmakta fayda vardır.

Merak edebileceğimiz ?: (if-then-else) operatörünün kullanımı ise şöyledir:

int sayi1 = -20;
int sayi2;
// assignment of sayi2 with if-then-else operator
sayi2 = sayi1 > 0 ? sayi1 : -sayi1;

Görüldüğü gibi bu kod sayi1'in mutlak değerini (absolute value of sayi1) alıp değeri sayi2'ye atamaktadır. sayi2 bu işlem sonrasında 20 değerini alır. Kısa işlemler için bu kullanım tercih edilebilmektedir.
Imza: admin








Yazilar kaynak gosterilmeden kopyalanamaz © www.kodcu.net // Twitter