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 zamantrue
dəyərini ala bilər ki, müqayisə olunan hər iki tərəftrue
olsun; - Inclusive OR (
|
) ancaq o zamanfalse
ola bilər ki, müqayisə olunan hər iki tərəffalse
olsun; - Exclusive OR (
^
) ancaq o zamantrue
ola 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]