
Ce face operatorul de atribuire? Atribuie ce la ce, când, unde și cum? Semnul egal să reprezinte un fapt, o condiție sau o posibilitate? Hai să dau câteva răspunsuri…
Operatorul de atribuire, în orice limbaj de programare vrei tu, atribuie valoarea din dreapta, variabilei din stânga. Exemple:
int a = 10; int b = a; System.out.println(a); // 10 a = 11; System.out.println(a); // 11 System.out.println(b) // 10
Ce am făcut în exemplele anterioare? Pe prima linie am atribuit valoarea 10 variabilei a; pe a 2-a linie am atribuit valoarea variabilei a la variabila b.
Până aici e totul limpede?
Pe linia a 3-a am afișat valoarea lui a; pe linia a 5-a am atribuit o nouă valoare variabilei a; pe linia a 6-a am afișat valoarea lui a (11), iar pe linia a 8-a am afișat valoarea lui b.
Un pic de atenție: am atribuit valoarea lui a variabilei b atunci când a era 10, deci nu am mai intervenit la b după ce am schimbat valoarea lui a.
Programul ține minte bine, funcționează dacă-i dai mură-n gură, nu e vreun robot cu nevoi speciale bazat pe inteligență artificială.
Orice valoare pui în dreapta semnului egal, va fi atribuită variabilei din stânga semnului egal.
În stânga semnului egal trebuie să ai neapărat un nume de variabilă, nu o valoare (oricum, variabila poate fi deja atribuită și îi poți schimba valoarea cum am făcut în exemplul anterior), dar în schimb, în dreapta semnului egal poți să ai și o valoare, nu neapărat un nume de variabilă.
Așadar, (aproape) în orice limbaj de programare, ține cont că semnul egal (=) introduce valoarea din dreapta în interiorul variabilei din stânga.
Imaginează-ți că stai drept cu mâna stângă întinsă în lateral (stânga) și cu mâna dreaptă întinsă în lateral (dreapta), deci ești un fel de statuie (sperietoare de ciori, glumesc…). Acum, trunchiul tău e la mijloc (adică semnul de atribuire, egal) și vrei să muți ciocolata din mâna dreaptă în mâna stângă. Numai după ce ai ciocolata în mâna stângă ai voie să o duci la gură s-o mănânci. Așa ceva este și aici. Numai după ce valoarea din dreapta s-a atribuit variabilei din stânga, numai atunci o poți folosi.
Deci ce reprezintă semnul egal? Să nu care cumva să încurci semnele alăturate == (egal-egal) care se folosesc la condiții. Dacă pui de două ori semnul egal, atunci se verifică o condiție dacă este adevărată sau falsă, deci nu se mai atribuie nimic, ci se trece direct la „război”.
Pentru operatorul de egalitate, condițional, cu semnul egal de două ori (==), îți recomand să citești articolul „Operatorul de egalitate (==)”.
Apropo, știai că operatorul de atribuire (=) ajută la prescurtarea unei declarații? Hai să ne uităm la trei exemple:
int a = 1; a += 3; // echivalent cu a = a + 3 int b = 2; b *= 5; // echivalent cu b = b * 5 int c = 10; c /= 10; // echivalent cu c = c / 10
În exemplele anterioare, am scris trei variante prescurtate folosindu-ne de operatorul de atribuire. Astfel, în loc de „a = a + 3”, am scris „a += 3”. Compilatorul este destul de inteligent pentru a interpreta astfel de „artificuri”.
Ce zici? Îți place cum se face prescurtarea? Uite aici exemple de prescurtări pentru toate tipurile de operații din Java:
- x += 1; (echivalent cu x = x +1)
- x -= 1; (echivalent cu x = x – 1)
- x *= 1; (echivalent cu x = x *1)
- x /= 1; (echivalent cu x = x / 1)
- x %= 1; (echivalent cu x = x % 1)
Poate spui că la primele cazuri puteam să scriu x++ sau x–. Ai dreptate! Operatorul de incrementare (++), respectiv de decrementare (–), i-am abordat în articolele următoare:
Îți mai las câteva exemple cu operatorul de atribuire? Hai să ne mai uităm la câteva…
int a = 1; System.out.println(a); // 1 a = 2; int b = 3; System.out.println(a + b); // 5 a = b; b = ++a; a = b++; System.out.println(a + b); // ?
Te invit să scrii în comentarii care este rezultatul afișării de pe ultima linie. Mulțumesc!
Învață să fii profesionist!