OCA Java imtahan mövzuları

Increment and Decrement Operators | Casting Primitive Values

increment-decrement-in-java
Written by Mushfiq Mammadov
Increment and Decrement Operators

Əgər operator dəyişəndən (operand) əvvəl gəlirsə, pre-increment (++a) və pre-decrement (--a) operator adlanır. Bu zaman operator əvvəlcə tətbiq/icra edilir və dəyişənin yeni dəyəri geri qaytarılır. Müvafiq olaraq, əgər operator dəyişəndən (operand) sonra gəlirsə, post-increment (a++) və post-decrement (a--) operator adlanır. Bu zaman isə əvvəlcə dəyişənin orijinal dəyəri geri qaytarılır və operator dəyər qaytarıldıqdan sonra icra edilir.

int x = 3;
int y = ++x * 5 / x-- + --x;
System.out.println("x is " + x);  // x is 2
System.out.println("y is " + y);  // y is 7

Addım-addım baxaq:

int y = 4 * 5 / x-- + --x;   // x assigned value of 4
int y = 4 * 5 / 4 + --x;     // x assigned value of 3
int y = 4 * 5 / 4 + 2;       // x assigned value of 2

Bu sualın izahı əksər oxucular tərəfindən qarışdırılır, hətta Coderanch forumunda da bu nümunənin izahı ilə bağlı 10-dan çox post var. Onlardan 2 ən maraqlısının linkini aşağıda qeyd etmişəm:

char ilə bağlı bir nümunəyə baxaq:

char c = 'c';
System.out.println(++c);      // output: d
System.out.println(++'c');    // DOES NOT COMPILE

 

Casting Primitive Values

Daha böyük tipdən (numerical) daha kiçik tipə və yaxud onluq saydan tam ədədə keçmək üçün casting istifadə olunur.

int x = (int)1.0;
short y = (short)1921222;  // Stored as 20678
int z = (int)9f;
long t = 192301398193810323L;

Overflow:

int i = 2147483647+1;       // -2147483648
int i2 = 2147483648;        // DOES NOT COMPILE
byte b = (byte) (128+128);  // 0
System.out.println(i+b);    //-2147483648

 

Bir sıra digər maraqlı nümunələrə baxaq:

short x = 10;
short y = 3;
short z1 = x * y;           // does NOT compile
short z2 = (short) x * y;   // does NOT compile
short z3 = (short)(x * y);  // does compile

byte b1 = (byte)1000 + (byte)1000;  // output: -48
byte b2 = (byte)100 + (byte)100;    // DOES NOT COMPILE
byte b3 = (byte)100 + (byte)27;     // output: 127

 

[topics lang=az]

About the author

Mushfiq Mammadov

Leave a Comment


The reCAPTCHA verification period has expired. Please reload the page.

 

This site uses Akismet to reduce spam. Learn how your comment data is processed.