OPERATORI U JAVI
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).
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 operacije
Izlaz iz ovog programa je:
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:
Nađimo na primer ostatak pri sledećem deljenju:
A=7 / 3
Ako posmatramo poznat postupak za određivanje ostatka:
Rezultat deljenja je u ovom primeru 2, a celobrojni ostatak pri deljenju je 1.
Ovaj celobrojni ostatak bi se dobio direktno korišćenjem operatora "%" :
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:ss
Reš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.
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)
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
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:
Kompletan kod sa unosom vremena od strane korisnika je prikazan ispod:
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
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;
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:
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
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
Posle pokretanja 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
Evo kako izgleda izlaz iz ovog 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.
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 | -> | , |
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
Petlje u programskom jeziku JAVA
Kreiranje web sajta
Grafika u Javi
ASP.NET Core web aplikacije