OPERATORI U JAVI

Operatori u Javi izvršavaju akcije nad promenljivim ili vrednostima, omogućavajući širok spektar proračuna i logičkih operacija unutar programa. Oni su neophodni za konstruisanje izraza, koji kombinuju vrednosti (operande) sa operatorima da bi proizveli rezultat. Java podržava različite tipove operatora, uključujući:Operatori predstavljaju radnje koje se izvršavaju nad operandima dajući pri tome određen rezultat. Izrazi su proizvoljno složeni sastavi operanda i operatora.
Operatori mogu da se primenjuju na jedan operand( unarni operatori) ili na dva operanda(binarni operatori).
Postoji i jedan operator sa tri operanda a to je ? : (objašnjen kasnije).

ARITMETIČKI OPERATORI

​Koriste se za izraze sa osnovnim  računskim operacijama. U tabeli ispod je dat pregled aritmetičkih operatora
U sledećoj tabeli je dat pregled aritmetičkih podataka.
Operator Upotreba Opis
+ op1+op2 Sabira op1 i op2
- op1-op2 Oduzima op2 od op1
* op1*op2 Množi op1 sa op2
/ op1/op2 Deli op1 sa op2
% op1%op2 Računa ostatak deljenja op1 sa op2
Sledi primer AritmetickiOpeatori u kome se definišu dve celobrojne promenljive i dva cela broja sa dvostrukom preciznošću (double) i sa njima se obavljaju različite aritmetičke operacije
​U nastavku vidimo ostale računske operacijePicture​Izlaz iz ovog programa je:
Picture

Ostatak deljenja dva broja. Operator "%"

Ovaj operator se vrlo često koristi za rešavanje određenih zadataka u programiranju. Npr. za ispitivanje deljivosti. Operator "%" izračunava ostatak deljenja dva broja.
Nađimo na primer ostatak pri sledećem deljenju:
A=7 / 3
Ako posmatramo poznat postupak za određivanje ostatka:Operatori u javi. Ostatak pri deljenju dva cela broja
Slika 1: Operatori u javi. Ostatak pri deljenju dva cela broja
Rezultat deljenja je u ovom primeru 2, a celobrojni ostatak pri deljenju je 1.
Ovaj celobrojni ostatak bi se dobio direktno korišćenjem operatora "%" :
A=7 % 3 = 1
Da bi smo pokazali upotrebu ovog operatora, posmatrajmo sledeći primer:

Primer 1: Vreme

Tekst zadatka: Uneti vreme u sekundama i odrediti koliko je to zapravo minuta, akoliko sekundi. Ispisati dakle, vreme, u formatu :mm:ssRešenje: Ako korisnik unese vreme od npr 155s, to znači da vreme treba napisati kao 2min: 35s.
S obyirom da jedan minut ima 60s, broj minuta u vrednosti 155 možemo dobiti celobrojnim deljenjem sa 60, a to je u ovom slučaju jednako 2. 
int vreme = 155, minuti;
minuti=vreme/60;// 155/60=2(zaokruženo na 2 jer se dele celi brojevi)
Da bi odredili preostalo vreme u sekundama, potrebno je naći ostatak deljenja sa 60:
int vreme = 155,minuti;
int sekunde;
minuti=vreme/60;// 155/60=2
sekunde=vreme % 60;// 155 % 60=35
Do ostatka se moglo doći i na drugi način, oduzimanjem, ali je u ovom primeru pokazano kako se upotrebljava operator "%". 
​Kompletan kod sa unosom vremena od strane korisnika je prikazan ispod:Operatori u javi - primer 1: Određivanje vremena
Slika 2: Operatori u javi - primer 1: Određivanje vremena

Primer 2: Cifra stotina

Tekst zadatka:Napiši program koji iz dekadnog zapisa broja izbacuje cifru stotina.Uputstvo: Korisnik prvo treba da unese broj B. Neka  je npr.  B =789. Da bi smo iz broja B izvukli pojedinačno cifre, uvešćemo tri dodatne promenljive za cifre stotice, desetice i jedinice. ​
int B= 789;
int s,d,j; // cifre stotica , desetica i jedinica. S obzirom da je 789=7*100 + 8*10 + 9, s=7, d=8 i j=9
Da bi racunski dobili ove cifre, koristeći broj B, koristićemo operatore "/" i "%". Ako želimo da izvučemo cifru 9 izvršićemo deljenje sa 10:
789 / 10 = 9
Da bi smo dobili cifru desetica, "8" u ovom primeru, izvr[i'emo dve uzastopne operacije: deljenje sa 10, a zatim ostatak deljenja sa 10
(789 / 10) % 10 = (78) % 10 = 8
Treba imati u vidu da se deljenje vrši sa celobrojnim konstantama(int), pa je rezultat deljenja ceo broj, tj. umesto 78,9 dobiće se samo 78, što predstavlja prvi manji ceo broj.Cifru jedinica možemo dobiti na sličan način:
(789 / 10) / 10 = (78) / 10 = 7
Dakle, za izračunavanje cifre desetice u kodu treba pisati:
int B= 789;
int s,d,j;
d = B / 10 % 10;
Ostatak zadatka je ostavljen čitaocu da samostalno reši.
Na kraju treba da se odredi broj N, bez cifre stotina. Jedan od načina bi bio:
int N;
N = d * 10 + j;//N= 8 * 10 + 9 = 89

Tipovi podataka za operande

​Kada se kao operandi u jednoj aritmetičkoj operaciji koriste zajedno ceo broj i realan broj, rezultat je realan broj. Ceo broj se implicitno konvertuje u realan broj pre samog izračunavanja. U tabeli koja sledi su prikazani tipovi podataka koji se vraćaju iz aritmetičkih operacija, na osnovu tipova operanada. Potrebne konverzije se vrše pre nego što se obavi operacija.  
Tip podatka za rezultat Tipovi podataka za operande
long Nijedan od operanada nije float ili double (artiemtika celih brojeva), a najmanje jedan od operatora je tipa long
int Nijedan od operanada nije float ili double (aritmetika celih brojeva). Nijedan operand nije long.
double Najmanje jedan operand je tipa double
float Najmanje jedan operand je tipa float. Nijedan nije tipa double
​Postoje i dva operanda koji omogućavaju skraćeno izračunavanje. To su operator ++(inkrement) koji operand povećava za 1 i operator – (dekrement) koji operand smanjuje za 1. Oba operatora mogu da se pojave ispred operanda (prefiks) i iza operanda (postfiks). Kod verzije prefiks, ++op/--op se prvo operand povećava za 1, pa se taj rezultat koristi dalje u izrazima. Kod verzije postfix se prvo operand primeni u izrazu (stara vrednost), a tek posle se ta vrednost promeni.  

PRIMER OPERATORA ++/--

Tekst zadatka: Zadati vrednosti promenljivih za dve vrste voćaka i na ovom primeru pokazati razliku upotrebe operatora ++/-- kao prefiks i sufiks
​Inkrementalni operator u javi(++) - primer : Broj voćaka, prvi deo
Slika 3: Inkrementalni operator u javi(++) - primer : Broj voćaka, prvi deo
Posle pokretanja programa:Inkrementalni operator u javi(++) - primer : Broj voćaka, izvršenje programa
Slika 4: Inkrementalni operator u javi(++) - primer : Broj voćaka, izvršenje programa
​U slučaju kada je operator “++” upotrebljen kao prefiks, broj narandzi, koji je u početku bio 5, prvo se povećao na 6, pa je ukupan broj voćaka 10 + 6 = 16. U drugom slučaju, kada je operator “++” korišćen kao sufiks u izrazu, prvo je izračunat ukupan broj voćaka sa prvobitnom vrednošću broja jabuka 5, dakle, 10 + 5 = 15, a tek posle toga se broj jabuka povećao na 6. Kada bi se broj jabuka smanjivao, tj. Koristio operator “- - “ logika bi bila ista.

RELACIONI I USLOVNI OPERATORI

​Relacioni operator poredi dve vrednosti i određuje vrednost između njih. Na primer, != vraća tačno ako dva operanda nisu jednaka. U tabeli koja sledi su dati relacioni operatori:
Operator Upotreba Vraća tačno(true) ako je
> op1>op2 op1 veće od op2
>= op1 >= op2 op2 veće ili jednako op1
< op1 < op2 op1 manje od op2
<= op1 <= op2 op1 manje ili jednako op2
== op1 == op2 op1 jednako sa op2
!= op1 != op2 op1 različito od op2
​U primeru koji sledi smo definisali tri cela broja i poredili ih pomo}u relacionih operatora.  

PRIMER RELACIONIH OPERATORA  

Tekst zadatka: Zadati vrednosti tri celobrojne promenljivih i pokazati različite primere upotrebe relacionih operatora
​Primer relacionih operatora u javi
Slika 5: Primer relacionih operatora u javi
​Evo kako izgleda izlaz iz ovog programa:
Primer relacionih operatora u javi-izvršenje programa
Slika 6: Primer relacionih operatora u javi-izvršenje programa
​Relacioni operatori se često koriste zajedno sa logičkim operatorima, čime se dobijaju složeni izrazi. U Javi postoje sledeći logički operatori:
Operator Upotreba Vraća tačno(true) ako je
&& op1 && op2 i op1 i op2 imaju vrednost true. op2 se izračunava samo ako je potrebno
|| op1 || op2 ili op1 ili op2 ima vrednost true (tačno). op2 se izračunava samo ako je potrebno
! !op op ima vrednost false (netačno)
& op1 & op2 i op1 i op2 imaju vrednost tačno. Uvek se izračunava i op1 i op2
| op1 | op2 Ili je op1 ili je op2 true (tačno). Uvek se izračunava i op1 i op2.
^ op1 ^ op2 ako su op1 i op2 različiti, odnosno ako jedan ima vrednost true, ali ne i oba
​Koja je razlika između operatora && i &? Razlika je u brzini izvršavanja programa. Sa operatorom & se vrednost drugog operatora uvek izračunava, dok se sa operatorom && izračunava vrednost prvog operanda, a ako je to dovoljno da se izračuna vrednost celog izraza, drugi operand se ne izračunava.  

OPERATOR DODELE

​Osnovni operator dodele je operator =, kojim se jedna vrednost dodeljuje drugoj.  U Javi postoje i operatori dodele kojim se odjednom izvršava više operacija. Pretpostavimo da želite da saberete vrednost promenljive sa nekim brojem i da rezultat dodelite istoj promenlivoj. Napisali biste: i = i + 2; Skraćeno se ovo može napisati pomoću operatora += na sledeći način: i += 2; Prethodna dva izraza su ekvivalentna.  U tabeli koja sledi su dati neki od operatora ovog tipa:  
Operator Upotreba Ekvivalentno sa:
+= op1 += op2 op1 = op1 + op2
-= op1 -= op2 op1 = op1 - op2
*= op1 *= op2 op1 = op1 * op2
/= op1 /= op2 op1 = op1 / op2
%= op1 %= op2 op1 = op1 % op2
&= op1 &= op2 op1 = op1 & op2
|= op1 |= op2 op1 = op1 | op2
^= op1 ^= op2 op1 = op1 ^ op2

OSTALI OPERATORI

​U tabeli koja sledi su dati ostali operatori koji postoje u Javi
Operator Opis operatora
[] Indeksiranje
() poziv funkcije
. pristup članu(elementu) strukture
-> pristup članu(elementu) strukture pomoću pokazivača
*(unarni) pristup podatku pomoću pokazivača(indirektno adresiranje)
&(unarni) adresa promenljive
​Operator ?:
Ovaj operator vraća op2, ako op1 ima vrednost true (tačno) ili vrednost op3 ako op1 ima vredcnost false (netačno). 
op1 ? op2 : op3
Pretpostavimo da imamo dve celobrojne promenljive tipa int, mojeGodine i tvojeGodine. Želimo da trećoj promenljivoj, stariji, dodelimo veću od ove dve vrednosti. Evo kako izgleda iskaz: stariji = tvojeGodine > mojeGodine ? tvojeGodine : mojeGodine Prvi argument ovog operatora je logički izraz tvojeGodine > mojeGodine. Ako taj izraz ima vrednost true (tačno), promenljiva stariji dobija vrednost tvojeGodine, a ako je prvi izraz ocenjen kao false (netačno) promenljiva stariji dobija vrednost mojeGodine. 
Operator []
Ovaj operator se koristi za deklarisanje nizova i za pristupanje elementima niza.  float [] realniNiz = new float[10]; Ovaj izraz deklariše niz realnih brojeva sa deset elemenata. Sedmom članu niza možete da pristupite na sledeći način: realniNiz[6]
Operator .
Ovaj operator se koristi za pristup članovima klase. Više o njemu kada se bude govorilo o klasama. 
Operator ()
Koristi se prilikom deklarisanja i poziva metoda klase. Više o njemu kada se bude govorilo o klasama.
Operator (tip)
Vrednost se konvertuje u određeni tip.  (double) a a se pretvara u tip double. 
Operator new
Koristi se za kreiranje novog objekta ili niza.  Integer a = new Integer(10); U ovom primeru se kreira novi objekat klase Integer. 
Operator instanceof
Ovaj operator testira da li prvi operator predstavlja priemrak klase koja je data drugim operatorom.  op1 instanceof op2 op1 mora biti objekat, a op2 mora biti ime klase. Objekat je instanca klase ako je primrak baš te klase ili neke klase koja je iz nje izvedena.  

PRIORITET OPERATORA

Ako se u izrazu nađe više operatora oni se izvršavaju određenim redosledom. U tabeli koja sledi je dat prioritet operatora. Operatori sa najvišim prioritetom su navedeni prvi, a zatim slede oni sa nižim prioritetom. Ako želite da promenite prioritet operatora, treba da koristite zagrade.
Prioritet Broj operanada Smer grupisanja: Operatori:
15 2 ->

[] () . ->

14 1 ->

! ~ ++ -- + - * & (tip) sizeof

13 2 ->

* / %

12 2 ->

+ -

11 2 ->

<< >>

10 2 ->

< <= > >=

9 2 ->

== !=

8 2 ->

&

7 2 ->

^

6 2 ->

|

5 2 ->

&&

4 2 ->

||

3 2 ->

?:

2 2 ->

=  +=  -=  *=  /=  %=  &=  ^=  |=  <<=  >>=

1 2 ->

,

Primer upotrebe operatora ? :

​Zamislimo da imamo broj i želimo da proverimo da li je paran ili neparan. Umesto da koristimo if-else, možemo koristiti ternarni operator.int broj = 5;
String rezultat = (broj % 2 == 0) ? "paran" : "neparan";
System.out.println("Broj je " + rezultat);

​Objašnjenje: U ovom primeru, uslov (broj % 2 == 0) proverava da li je broj paran. Ako je uslov tačan, vrednost će biti "paran", a ako nije, rezultat će biti "neparan".

Proverite svoje znanje rešavanjem kviza


​Prethodno
​|<Podaci u JAVA programskom jeziku
​Sledeće
​Grananje u programu>|

Srodni članci

Operatori u C/C++ jeziku
Petlje u programskom jeziku JAVA
Kreiranje web sajta
Grafika u Javi
ASP.NET Core web aplikacije