Logical Complement and Negation Operators
İnkar operatorunu (negation operator ⇒ - ) boolean ifadəyə, logical complement operatorunu (!) isə numeric ifadəyə tətbiq etmək mümkün deyil, compile xətası baş verir:
int x = !5; // does not compile boolean y = -true; // does not compile boolean z = !0; // does not compile
Digər proqramlaşdırma dillərindən fərqli olaraq java`da 1 ilə true və 0 ilə false bir-biri ilə əlaqələnmir.
Logical Operators
*FIGURE 1. The logical true tables for &, |, and ^
Daha yaxşı yadda saxlamaq üçün qaydalar:
- AND (
&) ancaq o zamantruedəyərini ala bilər ki, müqayisə olunan hər iki tərəftrueolsun; - Inclusive OR (
|) ancaq o zamanfalseola bilər ki, müqayisə olunan hər iki tərəffalseolsun; - Exclusive OR (
^) ancaq o zamantrueola bilər ki, müqayisə olunan tərəflər müxtəlif olsun.
Şərt operatorları && və || həm də short-circuit operators adlanır, müvafiq olaraq & və | operatorları ilə eyni işi görürlər, ancaq aralarında çox vacib bir fərq var:
&&və||istifadə olunan zaman əgər yekun nəticəni operatorun solundakı (left hand side) ifadəyə əsasən təyin etmək mümkündürsə, o zaman sağdakı (right hand side) ifadə icra edilmir (never evaluate);if(x != null && x.length()<5){
// if x is null x.length() doesn't execute, it prevents a NullPointerException
}
- Lakin
&və|operatorları ilə iş zamanı soldakı ifadənin nəticəsindən asılı olmayaraq sağdakı ifadə həmişə icra edilir.if(x != null & x.length()<5){
// if x is null x.length() throws NullPointerException
}
Nümunəyə baxaq:
int y = 6; boolean z = (y >= 6) || (++y <= 7); System.out.println(y); // y is 6, because ++y doesn't execute
Enthuware test bankında bu operatorla bağlı maraqlı bir sual nümunəsi var və həmin sual nümunəsi coderanch forumunda ətraflı şərh edilib. Müzakirələrə aşağıdakı linkdən baxa bilərsiniz:
[topics lang=az]

