Compound Assignment Operators dedikdə +=
, -=
, *=
, /=
və s. operatorlar nəzərdə tutulur.
int x = 2, z = 3; x = x * z; // Simple assignment operator x *= z; // Compound assignment operator x += 2; System.out.println(x); // output: 20 x =+ 2; System.out.println(x); // output: 2
Compound assignment operatorunun sol tərəfində dayanan dəyişən (x
) həmin sətrə kimi artıq elan olunmuş dəyişən olmalıdır, əks halda compile xətası verəcəkdir:
int y += 2; // does not compile
Əgər bu operator çaşdırıcı formada tərsinə yazılarsa, compile error verməyəcək!
int k =+ 2; // positive number int m =- 2; // negative number System.out.printf("k = %d and m = %d %n", k, m); // k = 2 and m = -2
Compound operator həm də ona görə faydalıdır ki, bizi açıq-aşkar cast etməkdən xilas edir:
long x = 10; int y = 5; y = y * x; // does not compile y = (int) y * x; // does not compile; mötərizə olmadığına görə y = (int) (y * x); // line1 y *= x; // line2
line1 və line2 mahiyyətcə bir-biri ilə eyni koddur. line2 sətrində y
əvvəlcə long
tipinə çevrilir, long
tipində olan x
dəyişəninə vurulur və alınan nəticə sonda yenidən int
tipinə cast olunur.
Digər nümunələrə baxaq:
double d = 10.8; int i = 5; i += d; System.out.println(i); // output: 15 not 15.8 short s = 3; s += 4.6; // is equivalent to: (short)(s + 4.6); System.out.println(s); // output: 7 long x = 5; long y = (x=3); System.out.println(x); // Outputs 3 System.out.println(y); // Also, outputs 3
[topics lang=az]