Operatori služe da bi se izvršile neke operacije nad promenljivim. Na osnovu primene operatora vrši se njihova podela:
- Aritmetički operatori
- Relacioni operatori
- Logički operatori
- Operatori nad bitovima
- Operatori dodele
- Trojni operator
Aritmetički operatori:
Binarni operatori – operatori nad dve promenljive:
- “+” – Sabira vrednosti promenljive levo i desno od operatora (npr. a+b).
- “–” – Oduzima vrednosti promenljive levo i desno od operatora (npr. a-b).
- “*” – Množi vrednosti promenljive levo i desno od operatora (npr. a*b).
- “/” – Deli vrednosti promenljive levo i desno od operatora (npr. a/b).
- “%” – Rezultat ovog operatora predstavlja ostatak pri deljenju dve promenljive (npr. a%b).
Unarni operatori – operatori nad jenom promenljivom:
- “++” – Inkrement, povećava vrednsot promenljive za 1. Može da stoji pre ili posle promenljive (npr. a++ ili ++a).
- “—” – Dekrement, smanjujevrednsot promenljive za 1 (npr. a– ili –a).
Razlika između pisanja inkrementa/dekrementa pre ili posle promenljive:
Prilikom pisanja inkrementa pre promenljive prvo se vrši njeno povećavanje, a zatim ostale operacije, dok kod pisanja nakon promenljive prvo se izvršavaju sve ostale operacije u toj liniji koda pa tek onda inkrement.
Npr. ako imamo a = 2 i pogledamo dva izraza:
- (a++) + 2 – rezultat je 4, zato što se prvo sabralo 2 + 2 pa se a tek onda povećalo za 1.
- (++a) + 2 – rezultat je 6, zato što se a prvo povećalo za 1, pa zatim onda sabralo 3+2.
Deljenje celobrojnih brojeva.
Ukoliko su dva broja koja se dele celobrojna (byte, int, long, short) rezultat će biti zaokružen, tako da i on bude celobrojni broj. Npr. 5/3 = 1
Primer:
Kod:
public class HelloWorld{ public static void main(String []args){ //Sav tekst napisan nakon znakova "//" predstavlja komentar i ta linija se neće izvršiti //Primeri operatora int a = 7; int b = 5; int c; c = a + b; System.out.println("Sabiranje: " + c); c = a - b; System.out.println("Oduzimanje: " + c); c = a * b; System.out.println("Množenje: " + c); c = a / b; System.out.println("Deljenje dva celobrojna broja (7/5): " + c); //Pošto će nam rezultat izraza biti double mora nam i promenljiva u koju upisujemo rezultat biti tipa double double c2; double b2 = 5; c2 = a / b2; System.out.println("Deljenje ako je jedan od njih double: " + c2); c = a % b; System.out.println("Ostatak pri deljenju: " + c); System.out.println(""); //Inkrement i dekrement int i = 1; a = (i++) + 1; // a = i + 1; i = i+1; System.out.println("Inkrement nakon promenljive: " + a); i = 1; a = (++i) + 1; // i = i+1; a = i + 1; System.out.println("Inkrement pre promenljive: " + a); //Operatori mogu da se kobinuju c2 = ((a+b) / b - a++) *b2; System.out.println("Kombinacija: " + c2); } }
Ispis:
Sabiranje: 12 Oduzimanje: 2 Množenje: 35 Deljenje dva celobrojna broja (7/5): 1 Deljenje ako je jedan od njih double: 1.4 Ostatak pri deljenju: 2 Inkrement nakon promenljive: 2 Inkrement pre promenljive: 3 Kombinacija: -10.0Relacioni operatori:
Relacioni operatori služe za poređenje promenljivih, rezultat relacionih operatora može biti true ako je uslov zadovoljen, ili false ukoliko postavljeni uslov nije zadovoljen, tj. rezultat je boolean vrednost.
- “==” – Proverava da li su vrednosti jednake (a==b).
- “!=” – Proverava da li vrednosti nisu jednake (a!=b).
- “>” – Proverava da li je vrednost sa leve strance veća od vrednosti sa desne (a>b).
- “<” – Proverava da li je vrednost sa leve strance manja od vrednosti sa desne (a>b).
- “>=” Proverava da li je vrednost sa leve strance veća ili jednaka od vrednosti sa desne (a>b).
- “<=” Proverava da li je vrednost sa leve strance manja ili jednaka od vrednosti sa desne (a>b).
Primer:
Kod:
public class HelloWorld{ public static void main(String []args){ int a = 5; int b = 10; boolean c; c = a == b; System.out.println("5 == 10 - " + c); c = a == a; System.out.println("5 == 5 - " + c); c = a != b; System.out.println("5 != 10 - " + c); c = a > b; System.out.println("5 > 10 - " + c); c = a > a; System.out.println("5 > 5 - " + c); c = a < b; System.out.println("5 < 10 - " + c); c = a >= a; System.out.println("5 >= 5 - " + c); c = a >= b; System.out.println("5 >= 10 - " + c); c = a <= b; System.out.println("5 <= 10 - " + c); } }
Ispis:
5 == 10 – false 5 == 5 – true 5 != 10 – true 5 > 10 – false 5 > 5 – false 5 < 10 - true 5 >= 5 – true 5 >= 10 – false 5 <= 10 - trueLogički operatori
Logički operatori koriste se za operacije između dva boolean tipa. Sa leve I desne strane može da se nađe isključivo boolean, a rezultat operacije je takođe boolean vrednost.
- “&&” – Logičko “i”. Rezultat je “true” isključivo ukoliko su ope promenljive “true” (a&&b) u suprotnom rezultat je “false”.
- “||” – Logičko “ili”. Rezultat je “true” ukoliko je bila od koje dve promenljive “true”. Tj. rezultat je “false” ukoliko su obe promenljive “false” (a || b).
- “!” – Negacija. Unarni operator, ukoliko je promenljiva “true” rezultat će biti “false” i obratno.
Primer:
Kod:
public class HelloWorld{ public static void main(String []args){ boolean t = true; boolean f = false; boolean c; //Logičko I c = t && t; System.out.println("true && true = " + c); c = t && f; System.out.println("true && false = " + c); c = f && t; System.out.println("false && true = " + c); c = f && f; System.out.println("false && false = " + c); System.out.println(""); //Logičko Ili c = t || t; System.out.println("true || true = " + c); c = t || f; System.out.println("true || false = " + c); c = f || t; System.out.println("false || true = " + c); c = f || f; System.out.println("false || false = " + c); System.out.println(""); //Negacija c = !t; System.out.println("!true = " + c); c = !f; System.out.println("!false = " + c); } }
Ispis:
true && true = true true && false = false false && true = false false && false = false true || true = true true || false = true false || true = true false || false = false !true = false !false = trueOperatori nad bitovima
Ovo su operatori koji izvršavaju operacije direktno nad bitovima. Međutim kako je za shvatanje ovih operacija neophodno znanje o binarnom brojnom sistem, da vas ne bi zbunjivali i bez potreba komplikovali stvari ove operatore ćemo preskočiti.
Operatori dodele
Operatore dodele služe da dodele novu vrednsot nekoj promenljivoj. Jedan ovakav operator smo već koristili u prethodnim primerima i u prethodnoj lekciji, to je “najobičniji” operator dodele, međutim postoje još neki.
- “=” – Operator koji smo već koristili, jednostavno vrednost sa desne strane izraza upiše u promenljivu sa leve strane.
- “+=” – Povećava vrednsot promenljive za vrednost sa desne strane.
- “-=” – Smanjuje vrednsot promenljive za vrednost sa desne strane.
- “*=” – Množi vrednsot promenljive za vrednost sa desne strane.
- “/=” – Deli vrednsot promenljive za vrednost sa desne strane.
- “%=” – Dobija ostatak pri deljenju vrednosti promenljive sa leve strane i vrednosti izraza sa desne i tu vrednsot upisuje u promenljivu.
- Kombinacije operatora nad bitovima i dodele
Lakše shvatanje:
Svaki od ovih dodanih operatora dodele može se posmatrati kao dve sazebne operacije:
a += b;
Gornji izraz daje isti rezultat (samo što se operacija daleko brže izvršava) kao:
a = a + b;
Primer:
Kod:
public class HelloWorld{ public static void main(String []args){ int a = 5; a += 5; System.out.println("a += 5 : " + a); a -= 2; System.out.println("a -= 2 : " + a); a *= 3; System.out.println("a *= 2 : " + a); a /= 2; System.out.println("a /= 2 : " + a); a %= 7; System.out.println("a %= 7 : " + a); } }
Ispis:
a += 5 : 10 a -= 2 : 8 a *= 2 : 24 a /= 2 : 12 a %= 7 : 5Trojni operator:
Jedini operator sa tri promenljive. Piše se u sledećem obliku(uslov) ? izrazA : izrazBUkoliko je rezultat uslova “true” rezultat operatora će biti jednak izrazu A, međutim ukoliko je uslov jednak “false” rezultat operatora će biti izraz B.
Kod:
public class HelloWorld{ public static void main(String []args){ int a = 5; int b = 6; int c; c = (ab) ? 100 : 0; System.out.println("(5>6) ? 100 : 0 = " + c); } }
Ispis:
(5<6) ? 100 : 0 = 100 (5>6) ? 100 : 0 = 0Zadaci
- Napisati program koji za zadate stranice (a i b) računa površinu i obim pravougaonika i ispisuje ih u konzoli.
Napisati program koji za datu rastojanje u centimetrima izračunava koliko ima metara I decimetara.