Operatorji v Java

Operator je simbol, ki deluje na enem ali večih argumentih in v skladu z njihovo vrednostjo in svojim namenom producira ustrezen rezultat. Nekatere izmed naštetih smo v dosedanjih programih že uporabljali, nekatere bomo uporabljali pogosteje, druge redkeje, prav pa je, da podamo kratek pregled teh zmožnosti, ki jih jezik Java ponuja programerju.

Glede na namen oz. področje uporabe, operatorje lahko razdelimo v nekaj skupin :

Aritmetični: (rezultat je število)

Operator Namen
+ vsota števil, konkatenacija nizov (String-ov), pretvorba celoštevilskega števila v int
+= seštej in priredi vsoto, stakni in priredi niz (String)
- razlika števil , aritmetična negacija števila
-= odštej in priredi razliko
* zmnožek števil
*= zmnoži in priredi
/ količnik števil
/= deli in priredi (divide and assign)
% določi ostanek pri celoštevilskem deljenju (take remainder)
%= določi ostanek pri celoštevilskem deljenju in priredi (take remainder and assign)
++ povečaj za 1 (increment by one)
-- zmanjšaj za 1 (decrement by one)

Relacijski operatorji (rezultat je logična vrednost)

Operator Namen
> večje kot (greater than)
>= večje ali enako kot (greater than or equal to)
< manjše kot (less than)
<= manjše ali enako kot(less than or equal to)
== test enakosti
!= test različnosti

Logični operatorji

Operator Namen
! logična negacija (boolean NOT)
!= logična neenakost (not equal to)
&& logični IN (boolean AND)
|| logični ALI (boolean OR)
== logična enakost (boolean equals)

Bitni operatorji

Operator Namen
~ bitna negacija oz. eniški komplement (bitwise NOT)
| bitni ALI (bitwise OR)
|= bitni ALI in prirejanje (bitwise OR and assign)
^ bitni ekskluzivni ALI (bitwise XOR)
^= bitni ekskluzivni ALI in prirejanje (bitwise XOR and assign)
& bitni IN (bitwise AND)
&= bitni IN in prirejanje (bitwise AND and assign)
>> pomik bitov v desno z upoštevanjem predznaka (shift bits right with sign extension)
>>= pomik bitov v desno z upoštevanjem predznaka in prirejanje (shift bits right with sign extension and assign)
<< pomik bitov levo (shift bits left)
<<= pomik bitov levo in prirejanje (shift bits left and assign)
>>> pomik bitov desno brez upoštevanja predznaka (unsigned bit shift right)
>>>= pomik bitov desno brez upoštevanja predznaka in prireditev (unsigned bit shift right and assign)

Nekategorizirani

= prirejanje (assignment)
?: pogojni operator (conditional)
. operator dosega (selekcijski operator, selection)
:: operator dosega (selekcijski operator, selection)
( ) vsiljena pretvorba tipa (cast), združevanje v aritmetičnih izrazih
[] deklaracija tabele, kreiranje tabele, indeksiranje el. tabele
new kreira nov objekt ali tabelo elementov
instanceof preverjanje tipov (type checking)

Raba operatorjev

Kot je bilo rečeneo, operator izvaja funkcijo nad enim, dvema ali tremi operandi.V primeru, da funkcijo izvaja nad enim operandom, ga imenujemo unarni (unary) operator. Primer unarnega operatorja je operator ++, ki vrednost operanda poveča za ena. Operatorje, ki zahtavajo dva operanda za svoje izvajanje, imenujemo binarni (binary) operatorji . Npr. = je binarni operatorj, ki preredi vrednost izraza (podatka) na desni strani operandu na levi strani operatorja. Tretja vrsta operatorjev so takoimenovani ternarni (ternary) operatorji, ki zahtevajo tri operande. Javanski programski jezik pozna le en sam ternarni operator ?:, ki (poenostavljeno rečeno) predstavlja krajšo obliko if-else stavka.

Unarni operatorji lahko nastopajo v prefiksni ali postfiksni obliki. Prefiksna oblika pomeni, da operator v izrazu nastopa pred operandom:

operator op             //prefiksna oblika

Pri postfiksni obliki operator nastopa za operandom:

op operator             //postfiksna oblika

Vsi binarni operatorji uporabljajo infiksno (vmesno) notacijo zapisa, kar pomeni, da operanda nastopata v izrazu levo in desno od operatorja:

op1 operator op2        //vmesna oblika

Tudi ternarni operatorji uporabljajo vmesno obliko; vsak izmed operatorjev nastopa med dvema operandoma:

op1 ? op2 : op3         //vmesna oblika

 


Prioriteta operatorjev

Da bi se kompleksnejši izrazi, ki lahko vsebuejo več operatorjev, lahko pravilno (predvsem pa enolično) izvršili, je operatorjem določena privzeta prioriteta, ki se upošteva vsled izvajanja izraza. Spodaj je podana v padajočem vrstnem redu, od tistih z najvišjo do tistih z najnižjo prioriteta. Operatorji v isti vrsti so si prioritetno enakovredni:

  operator opomba
  [] . ( izraz ) ++, -- postfiksna ++ in --, ( ) za združevanje
  + - ++ -- ~ ! unarna operatorja + in - , prefiksna ++ in --
  new (tip) () kot operator za pretvorbo tipa
  * / %  
  + - aritmetična + in -
  << >> >>> pomikalni operatorji
  < > <= >= instanceof relacijski
  == != test enakosti, različnosti
  & bitni
  ^ bitni
  | bitni
  && logični
  || logični
  ? : pogojni operator
  = += -= *= /= %= &= ^= |= <<= >>= >>>= prireditve
     

Primeri rabe nekaterih (aritmetičnih) operatorjev :

int a,b,c,d;

float e,f,g,h;

a = 3; b = 4; c = a+b; // a <- 3, b <- 4, c <- 7

e=3; f=4; g= e-f; // e <- 3.0, f<- 4.0, g <- -1.0;

d = c/a; // d<-2

c %= 3; // c<-1

h = e/f; // h<- 0.75

d = a++; // d<-3, a<-4

a-=1; // a<-3;

c = ++a; // a<-4, d<-4