10/10/2018

Java 03: Operatori

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.0

Relacioni 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 - true

Logič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 = true

Operatori 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 : 5

Trojni operator:

Jedini operator sa tri promenljive. Piše se u sledećem obliku
(uslov) ? izrazA : izrazB
Ukoliko 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 = (a6) ? 100 : 0 = " + c);
     }
}
Ispis:
(5<6) ? 100 : 0 = 100
(5>6) ? 100 : 0 = 0

Zadaci

  1. Napisati program koji za zadate stranice (a i b) računa površinu i obim pravougaonika i ispisuje ih u konzoli.
  2. Napisati program koji za datu rastojanje u centimetrima izračunava koliko ima metara I decimetara.

Sledeća lekcija

Share

You may also like...

Leave a Reply

Your email address will not be published. Required fields are marked *