Java - Operatori


U ovoj ćete lekciji saznati o različitim vrstama operatora u Javi, njihovoj sintaksi i kako ih koristiti uz primjere. Operatori su posebni simboli (znakovi) koji izvode operacije na operandima (varijablama i vrijednostima). Na primjer, + je operator koji obavlja sabiranje. U prethodnoj lekciji učili ste o Java varijablama. Naučili ste kako deklarisati varijable i dodijeljivati im vrijednosti. Sada ćete naučiti kako koristiti operatore za manipulaciju varijablama.



Assignment Operator - Operator dodjele

Operatori dodjele koriste se u Javi za dodjeljivanje vrijednosti varijablama. Na primjer:

int age;
age = 5;

Operator dodjele dodjeljuje vrijednost s desne strane varijabli. Ovdje je 5 dodijeljeno promjenjivoj age koristeći operator =. Ima i drugih operatora dodjele. Međutim, da pojednostavimo stvari, kasnije ćemo u ovoj lekciji naučiti ostale operatore dodjele.


Primjer 1: Operator dodjele

class AssignmentOperator {
    public static void main(String[] args) {
    	
        int number1, number2;
    	
        // Dodjeljivanje vrijednosti 5 varijabli number1
        number1 = 5;
        System.out.println(number1);
    	    	
        // Dodjeljivanje vrijednosti varijabli number2 vrijednost varijable number1
        number2 = number1;
        System.out.println(number2);
    }
}


Arithmetic Operators - Aritmetički operatori

Aritmetički operatori se koriste za izvođenje matematičkih operacija poput sabiranja, oduzimanja, množenja itd.

Operator Značenje
+ Addition Operator (Sabiranje)
- Subtraction Operator (Oduzimanje)
* Multiplication Operator (Množenje)
/ Division Operator (Djeljenje)
% Remainder Operator (Ostatak)

Primjer 2: Aritmetički operator

class ArithmeticOperator {
    public static void main(String[] args) {
    	
        double number1 = 12.5, number2 = 3.5, result;
    	
        // Koristi addition operator
        result = number1 + number2;
        System.out.println("number1 + number2 = " + result);
    	
        // Koristi subtraction operator
        result = number1 - number2;
        System.out.println("number1 - number2 = " + result);
    	
        // Koristi multiplication operator
        result = number1 * number2;
        System.out.println("number1 * number2 = " + result);

        // Koristi division operator
        result = number1 / number2;
        System.out.println("number1 / number2 = " + result);
    	
        // Koristi remainder operator
        result = number1 % number2;
        System.out.println("number1 % number2 = " + result);
    }
}

U gornjem primjeru, svi korišteni operedi su varijable. Međutim, to uopšte nije potrebno. Operandi koji se koriste u aritmetičkim operatorima mogu biti i literali. Na primjer:

result = number1 + 5.2;
result = 2.3 + 4.5;
number2 = number1 -2.9;

Operator + se takođe može koristiti za spajanje dva ili više stringova.


Primjer 3: Aritmetički operator za dodavanje stringova

class ArithmeticOperator {
    public static void main(String[] args) {
    	
        String start, middle, end, result;
    	
        start = "Znanje je moć!";
        middle = " Pokaži svoj kod. ";
        end = " - Miloš Mihaljica";
    	
        result = start + middle + end;
        System.out.println(result);
    }
}


Unary Operators - Unarni operatori

Unarni operater izvodi operacije na samo jednom operandu.

Operator Značenje
+ Unarni plus (nije potrebno koristiti jer su brojevi pozitivni bez upotrebe)
- Unarni minus: invertira znak izraza
++ Inkrement operator: vrijednost povećanja za 1
-- Dekrement operator: vrijednost smanjenjuje za 1
! Operator logičkog dopunjavanja: invertira vrijednost boolean-a

Primjer 4: Unarni operator

class UnaryOperator {
    public static void main(String[] args) {
    	
        double number = 5.2, resultNumber;
        boolean flag = false;
    	
        System.out.println("+number = " + +number);
        // broj je ovdje 5,2.
        
        System.out.println("-number = " + -number);
        // broj je ovdje 5,2.
    	
        // ++number je ekvivalentan number = number + 1
        System.out.println("number = " + ++number);
        // broj je ovdje 6,2.

        // -- number je ekvivalentan number = number - 1
        System.out.println("number = " + --number);
        // broj je ovdje 5,2.

        System.out.println("!flag = " + !flag);
        // flag je i dalje false.
    }
}


Inkrement i dekrement operatori

U Javi možete koristiti i ++ i -- operator kao prefiks i postfiks. Operator ++ povećava vrijednost za 1, a -- operator smanjuje vrijednost za 1.

int myInt = 5;
++myInt   // myInt postaje 6
myInt++   // myInt postaje 7
--myInt   // myInt postaje 6
myInt--   // myInt postaje 5

Do sada je sve jednostavno. Međutim, postoji ključna razlika dok koristite operatore inkrement (++) i dekrement(--) kao prefiksa i postfiksa. Uzmite u obzir sljedeći primjer:


Primjer 5: Unarni operator

class UnaryOperator {
    public static void main(String[] args) {
    	
        double number = 5.2;

        System.out.println(number++);
        System.out.println(number);

        System.out.println(++number);
        System.out.println(number);
    }
}

Primijetite liniju koda:

System.out.println(number++);

Kada se ova izjava izvrši, prvo se procenjuje izvorna vrijednost. Tada se broj povećava. To je razlog zašto dobijate 5,2 kao izlaz. Sljedeća linija koda:

System.out.println(number);

Ispisaće povećanu vrijednost. To je 6.2. Međutim, linija:

System.out.println(++number);

Prvo će povećati number za 1, a zatim se izjava izvršava. Dakle, izlaz je 7,2. Slično je i sa dekrement operatorom.



Relacijski i operator jednakosti

Operatori za jednakost i relacijske odrednice određuju odnos između dva operanda. Provjerava da li je operand veći od ..., manji od ..., jednak, nije jednak itd. Zavisno o odnosu, procjenjuje se true (istinitim) ili false (lažnim).

Operator Ime operatora Primjer
== Equal to (Jedanko) 6 == 4 daje false
> Greater than (Veće od) 3 > -1 daje true
< Less than (Manje od) 5 < 3 daje false
>= Greater than or equal to (Veće ili jednako) 4 >= 4 daje true
<= Less than or equal to (Manje ili jednako) 5 <= 3 daje false
!= Not equal to (Nije jednako) 10 != 2 daje true

Operatori za jednakost i relacije koriste se u odlučivanju i petljama (o čemu će biti govora kasnije). Za sada pogledajte ovaj jednostavan primjer:


Primjer 6: Relacijski i operator jednakosti

class RelationalOperator {
    public static void main(String[] args) {
    	
        int number1 = 5, number2 = 6;

        if (number1 > number2) {
            System.out.println("number1 je veći od number2.");
        }
        else {
            System.out.println("number2 je veći od number1.");
        }
    }
}

Ovdje smo koristili > operatora da provjerimo da li je number1 veći od number2 ili ne. Budući da je number2 veći od number1, izraz number1 > number2 ocjenjuje se lažnim (false). Dakle, drugi blok koda se izvršava, a blok koda unutar if se preskače. Ako niste razumjeli gornji kod, ne brinite. Detaljno ćete ga naučiti u Javi if...else uslovima. Za sada se samo sjetite da operateri za jednakost i relacijske odrednice porede dva operanda i ocjenjuju se istinitim (true) ili lažnim (false).



instanceof operator

Pored relacijskih operatora, postoji i operator upoređivanja tipa koji upoređuje objekt s navedenim tipom. Na primjer:


Primjer 7: instanceof operator

class instanceofOperator {
    public static void main(String[] args) {
    	
        String test = "asdf";
        boolean result;
    	
        result = test instanceof String;
        System.out.println("Da li je test objekat ili string? " + result);
    }
}

Ispisuje Da li je test objekat ili string? - true



Logički operatori

Logični operatori || (conditional-OR) i && (conditional-AND) djeluju na logičke izraze. Evo kako funkcionišu.

Operator Opis Primjer
|| conditional-OR: true ako je bilo koji od logičnog izraza true false || true se procjenjuje true
&& conditional-AND: true ako su svi boolean izrazi true false && true procjenjuje se na false

Primjer 8: Logični operatori

class LogicalOperator {
    public static void main(String[] args) {
    	
        int number1 = 1, number2 = 2, number3 = 9;
        boolean result;
    	
        // Barem jedan izraz mora biti istinit da bi rezultat bio istinit
        result = (number1 > number2) || (number3 > number1);

        // Rezultat će biti istinit, jer je (number1 > number2) istinit
        System.out.println(result);
    			
        // Svi izrazi moraju biti istiniti od rezultata da bi bili istiniti
        result = (number1 > number2) && (number3 > number1);

        // Rezultat će biti lažan, jer je (number3 > number1) lažan
        System.out.println(result);
    }
}


Ternarni operatori

Uslovni operator ili ternarni operator ?: skraćenica je za izjavu if-then-else. Sintaksa uslovnog-ternarnog operatora je:

variable = Expression ? expression1 : expression2

Evo kako to funkcioniše:

  • Ako je Expression true, expression1 dodijeljen je varijabli.
  • Ako je Expression false, varijabli je dodijeljen expression2.

Primjer 9: Ternarni operator

class ConditionalOperator {
    public static void main(String[] args) {
    	
        int februaryDays = 29;
        String result;
    	
         result =  (februaryDays == 28) ? "Nije prestupna godina" : "Prestupna godina";
         System.out.println(result);
    }
}

Ovdje smo koristili ternarni operator da provjerimo da li je godina prestupna ili ne. Da biste saznali više, posjetite lekciju Java operatori.



Bitwise i Bit operatori

Za izvođenje operacija Bitwise i Bit u Javi koriste se sljedeći operateri.

Operator Ime operatora
~ Bitwise Complement
& Bitwise AND
| Bitwise OR
^ Bitwise Exclusive OR
<< Bitwise Left Shift
>> Bitwise Right Shift
>>> Unsigned Right Shift

Još operatora dodjele

Operator Primjer Ekvivalentnost
+= x += 5 x = x + 5
-= x -= 5 x = x - 5
*= x *= 5 x = x * 5
/= x /= 5 x = x / 5
%= x %= 5 x = x % 5
<<= x <<= 5 x = x << 5
>>= x >>= 5 x = x >> 5
&= x &= 5 x = x & 5
^= x ^= 5 x = x ^ 5
|= x |= 5 x = x | 5

Sada znate o Java operatorima, a vrijeme je da saznate o redosljedu kojim se operateri u nekom izrazu ocjenjuju kada dva operatora dijele zajednički operand.