Java`da 3 tip operator mövcuddur:
- unary
- binary
- ternary
Java`da operatorlar öncəlik sırasına (operator precedence) görə dəyərləndirilir və əgər eyni öncəlik sırasına məxsus iki operator bir sətirdə yer alarsa, o zaman hesablanma qaydası adətən soldan-sağa doğru icra edilir.
Table 1. Order of operator precedence*
Operator | Symbols and examples |
Post-unary operators | expression++, expression−− |
Pre-unary operators | ++expression, −−expression |
Other unary operators | +, -, ! |
Multiplication/Division/Modulus | *, /, % |
Addition/Subtraction | +, – |
Shift operators | <<, >>, >>> |
Relational operators | <, >, <=, >=, instanceof |
Equal to/not equal to | ==, != |
Logical operators | &, ^, | |
Short-circuit logical operators | &&, || |
Ternary operators | boolean expression ? expression1 : expression2 |
Assignment operators | =, +=, -=, *=, /=, %=, &=, ^=, |=, <<=, >>=, >>>= |
assignment operatoru digər operatorlardan fərqli olaraq soldan-sağa doğru deyil, sağdan-sola doğru hesablanır. Eyni bir sətirdə zəncirvari şəkildə bir neçə dəyişənə dəyər mənimsətmək mümkündür, bir şərtlə ki, həmin dəyişənlər əvvəlcədən elan edilmiş olsunlar. Məsələn, aşağıdakı kod compile olunmayacaq:
int a = b = c = 100; // does not compile
Əgər b
və c
dəyişənini əvvəlcədən elan etsək kod compile olunacaq:
int b = 0, c = 0;
int a = b = c = 100;
Aşağıdakı formada yazılış da səhv deyil:
int b, c; // Not initializing b and c here.
int a = b = c = 100; // declaring a and initializing c, b, and a at the same time.
Sonuncu sətirdə ilk öncə c
dəyişəninə dəyər mənimsədilir, daha sonra c
`nin dəyəri b
dəyişəninə mənimsədilir. Ən sonda isə a
dəyişəninin dəyəri mənimsədilir.
Bütün aritmetik/riyazi operatorlar (arithmetic operators ⇒ *, /, %, +, -
) boolean
və String
tiplərindən başqa istənilən primitiv java tipinə tətbiq edilə bilər. Ancaq + və += iki String
dəyərini birləşdirmək üçün (concatenation) tətbiq edilə bilər.
String str = null + "k";
System.out.println(str); // output: nullk
String str2 = null + null; // DOES NOT COMPILE
Modul əməliyyatlarında ( %
), tutaq ki, bölünən (dividend) – y
və bölən (divisor) – x
olarsa:
- y – müsbət ədəd olarsa: nəticə həmişə 0 ilə (x-1) aralığında olur;
- y – mənfi ədəd olarsa: nəticə həmişə 0 ilə (-x+1) aralığında olur.
System.out.println(8%3); // output: 2 System.out.println(-8%3); // output: -2 System.out.println(8%-3); // output: 2 System.out.println(-8%-3); // output: -2
Nümunədən belə qərara gəlmək olar ki, bölənin (x
) mənfi olub olmaması nəticəyə heç bir təsir göstərmir, ancaq bölünənin (y
) qiymətini yoxlayır.
[topics lang=az]