Sunday, August 13, 2023

Java operatori u akciji, praktični primeri za svaki nivo programera

Ukoliko ste dobro prostudirali tipove podataka, promenjive i konstante u Java programskom jeziku; pogledajte prethodni post ovde; onda ste spremni da se upoznate i sa operatorima u Java programskom jeziku. Ukoliko poznajete C# programski jezik i pored toga što je Java programski jezik nasledio operatore iz C++ programskog jezika; imaćete utisak da C# programski jezik ima iste operatore kao Java programski jezik. Razlika je jedino u tome što Java programski jezik nema overloading operator niti podržava pokazivače. C# programski jezik ne koristi pokazivače ali ih podržava u unsafe modu što Java programski jezik ne radi. Razlika je i u tome da Java programski jezik deli operatore na više načina. Najčešći način je da Java programski jezik deli operatore u četiri osnovne grupe i sve ostalo u dodatne operatore.

  • Aritmetički operatori
  • Operatori nad bitovima
  • Operatori poređenja
  • Logički operatori
  • Dodatni operatori


( Operatori u Java programskom jeziku se mogu deliti na više podela )

Mi ćemo se u ovom postu detaljno baviti osnovnim operatorima dok ćemo se dodatnim operatorima baviti u nekim drugim postovima kada budete imali veće znanje o Java programskom jeziku i kada budemo programirali komplikovanije Java aplikacije. Za sada se potrudite da dobro razumete kako se koriste operatori u Java programskom jeziku. Ukoliko ne znate kako da napravite najjednostavniju digitron aplikaciju u nekom programskom jeziku, onda definitivno ne znate kako da koristite aritmetičke operatore u programiranju. Zato je najbolje da krenemo od aritmetički operatora.

Aritmetički operatori


Aritmetički operatori koje koristite na vašim kalkulatorima i matematičkim izrazima se često koriste u programiranju; i kada je Java programski jezik u pitanju opernati aritmetičkih operatora moraju da budu numeričkog tipa ili tipa char. Ne možete da ih primenite na boolean tip. Ovo su aritmetički operatori:
  •         +             sabiranje
  •         -              oduzimanje, unarni minus  
  •          *             množenje
  •         /              deljenje
  •         %            modulo, ostatak pri deljenju
  •         ++           inkrementiranje
  •         --             dekrementiranje
  •         +=           dodeljivanje uz sabiranje
  •         -=            dodeljivanje uz oduzimanje
  •         *=           dodeljivanje uz množenje
  •         /=           dodeljivanje uz deljenje
  •        %=          dodeljivanje uz računanje ostatka pri deljenju


( Aritmetički operatori u Java programskom jeziku )

Mi nećemo u ovom postu praviti program tipa digitron, već ćemo napraviti jednostavan program koji će nam ilustrovati upotrebu svih navedenih aritmetičkih operatora. Sa ovim znanjem sami možete kreirati aplikaciju tipa digitron. Zato kreirajte novi program i nazovite ga arithmeticoperators. Unesite sledeći kod:

package com.tutorial;


public class arithmeticoperators {
    public static void main(String[] args) {
        int a = 28;
        int b = 5;
        int c;

        double d, e, f;

        System.out.println();
        System.out.println("        *** ARITHMETIC OPERATORS *** ");
        System.out.println();

        System.out.println("a = " + a);
        System.out.println("b = " + b);
        System.out.println();

        c = a + b;
        System.out.println("a + b = " + c);

        c = a - b;
        System.out.println("a - b = " + c);

        c = a * b;
        System.out.println("a * b = " + c);

        // to convert integer into double
       
d = a;
        e = b;
        f = d / e;
        System.out.println("a / b = " + f);

        c = a % b;
        System.out.println("a % b = " + c);
        System.out.println();

        a++;
        System.out.println("a++ = " + a);

        a--;
        System.out.println("a-- = " + a);
        System.out.println();

        a = 28;
        a += b;
        System.out.println("a += b = " + a);

        a = 28;
        a -= b;
        System.out.println("a -= b = " + a);

        a = 28;
        a *= b;
        System.out.println("a *= b = " + a);

        System.out.println("a /= b = " + f);

        a = 28;
        a %= b;
        System.out.println("a %= b = " + a);
        System.out.println();

    }

}

U navedenom programu inicijalizujemo dve promenjive tipa integer, zatim sa tim vrednostima testiramo sve aritmetičke operatore. S obzirom da kod deljenja ne želimo da rezultat a / b bude zaokružen na 5 jer radimo sa promenjivima tipa integer, neophodno je da kreiramo promenjive tipa float ili double. U starijim verzijama Java programskog jezika bi samo uradili cast – kasting tipa double; ali to ne funkcioniše više. Zato smo deklarisali tri nove promenjive def tipa double da oni preuzmu automatski vrednosti tipa integer i pretvore ih u tipa double. Na taj način smo dobili rezultat sa pokretnim zarezom; a / b = 5.6 Interesantno je napomenuti da prilikom ispisa na terminal promenjive double ali i ostalih numerički vrednosti u kombinaciji sa tipom string ne bi bilo moguće u Python programskom jeziku bez kastinga tipa str – string. To samo potvrđuje koliko Java programski jezik ima sličnosti sa C# programskim jezikom. Kad pokrenete navedeni program dobićete sledeće rezultate koje prikazuju vrednosti svih aritmetičkih izraza i na osnovu istog videti kako koji aritmetički operator funkcioniše.

       *** ARITHMETIC OPERATORS ***

a = 28
a = 5

a + b = 33
a - b = 23
a * b = 140
a / b = 5.6
a % b = 3

a++ = 29
a-- = 28

a += b = 33
a -= b = 23
a *= b = 140
a /= b = 5.6
a %= b = 3

Isti ovaj program možete pogledati i na video-u:


( Java - 3. Arithmetic Operators )

Operatori za bitove

Da bi ste razumeli kako računar radi sa bitovimaoktalnim i heksadecimalnim vrednostima i kako se pomeraju bitovi u levu ili desnu stranu i ispunjavaju nulama; za to je potrebno da izdvojite mnogo vremena. Pronađete nekoliko dobrih starih knjiga i to prostudirate detaljno mimo učenja Java programskog jezika. Za sada se bar upoznajte sa operatorima koje koriste bitovi. To su:

  •                      NOT       negacija bitova operanda
  •          &            AND       konjukcija bitova
  •          |              OR          disjunkcija bitova
  •          ^             XOR       isključiva disjunkcija bitova
  •          >>                           pomeranje bitova u desno
  •          >>>                        pomeranje bitova u desno uz dopunjavanje nulama
  •          <<                           pomeranje bitova u levo
  •          &=                          dodeljivanje uz konjukciju bitova
  •          !=                            dodeljivanje uz konjukciju bitova
  •          ^=                           dodeljivanje uz isključivu disjunkciju bitova
  •          >>=                        dodeljivanje uz pomeranje u desno
  •          >>>=                     dodeljivanje uz pomeranje u desno uz dopunjavanje nulama
  •          <<=                        dodeljivanje uz pomeranje ulevo


( Operatori za bitove u Java programskom jeziku )

Kreiraćemo jednu simulaciju koristeći navedene operatore. Kreirajte novi program i nazovite ga bitsoperators. Unesite sledeći kod:

package com.tutorial;

public class bitoperators {
   
public static void main(String[] args) {
       
String binaryNumbers[] = {
               
"0000", "0001", "0010", "0011", "0100", "0101", "0110", "0111",
               
"1000", "1001", "1010", "1011", "1100", "1101", "1110", "1111"
       
};

       
int a = 3; // 0011
       
int b = 5; // 0101

       
System.out.println();
       
System.out.println("        *** BITS OPERATORS *** ");
       
System.out.println();

       
System.out.println("        a = " + binaryNumbers[a]);
       
System.out.println("        b = " + binaryNumbers[b]);
       
System.out.println();

       
int c = a | b;
       
System.out.println("        a | b = " + binaryNumbers[c]);

       
int d = a & b;
       
System.out.println("        a & b = " + binaryNumbers[d]);

       
int e = a ^ b;
       
System.out.println("        a ^ b = " + binaryNumbers[e]);

       
int f = (-a & b) | (a & -b);
        
System.out.println("        -a & b | a & -b = " + binaryNumbers[f]);

       
int g = -a + 0x0f;
       
System.out.println("        -a + 0x0f = " + binaryNumbers[g]);
       
System.out.println();

       
int h = a << 2;
       
System.out.println("        a << 2 = " + binaryNumbers[h]);

       
int i = b >> 2;
       
System.out.println("        a >> 2 = " + binaryNumbers[i]);
       
System.out
.println();

    }

}


Znam; nismo još učili nizove; učićemo; za sada samo pogledajte kako niz tipa String izgleda. On je ovde čisto da predstavi svih 16 bitova u bitnim brojevima 0 i 1 umesto da deklarišemo 16 promenjivih tipa String. Zatim pustimo naš program da on vrši izraze operatora za bitove umesto da mi to radimo pešaka i da nam pokaže rezultate. Ovo je jedan mali izuzetno koristan program gde možete videti rezultate kako Java program radi sa operatorima za bitove. Kad izvršite navedeni kod dobiće te sledeći rezultat:

       *** BITS OPERATORS ***

        a = 0011
        b = 0101

        a | b = 0111
        a & b = 0001
        a ^ b = 0110
        -a & b | a & -b = 0001
        -a + 0x0f = 1100

        a << 2 = 1100
        b >> 2 = 0001

Kako isti ovaj program radi, možete pogledati i na video-u:


( Java - 4. Bitwise Operators )

Operatori za poređenje

Operatori za poređenje utvrđuju odnos jednog operanda sa drugim dajući nam logičnu vrednost tipa boolean. Često se koristi u if iskazima odlučivanja i petljama. Operatori za poređenje u Java programskom jeziku se ništa ne razlikuju od operatora za poređenje u C# programskom jeziku ali i u drugim programskim jezicima. Svih šest operatora za poređenje su:
  •          ==           jednako
  •          !=            različito
  •          >             veće od
  •          >=           veće ili jednako od
  •          <             manje od
  •          <=           manje ili jednako od

Kreirajmo jedan jednostavan program i nazovimo ga relationaloperators. Unesite sledeći kod:

package com.tutorial;

public class relationaloperators {
   
public static void main(String[] args) {
       
int a = 28;
       
int b = 5;
       
boolean c = false;

       
System.out.println();
       
System.out.println("        *** REALATIONAL OPERATORS ***");
       
System.out.println();

       
System.out.println("a = " + a);
       
System.out.println("b = " + b);
       
System.out.println("c = " + c);
       
System.out.println();

       
c = a == b;
       
System.out.println("a == b : " + c);

       
c = a != b;
       
System.out.println("a != b : " + c);

       
c = a > b;
       
System.out.println("a > b : " + c);

       
c = a >= b;
       
System.out.println("a >= b : " + c);

       
c = a < b;
       
System.out.println("a < b : " + c);

       
c = a <= b;
       
System.out.println("a <= b : " + c);
       
System.out
.println();

    }
}



Kao što možete videti u navedenom primeru mi smo deklarisali dve promenjive tipa integer; dodelili dve numeričke vrednosti, čisto da bi smo imali šta porediti. Ali za rezultat smo naravno koristili promenjivu tipa boolean. Numerička vrednost može biti i čitav proračun nekog matematičkog zadatka; čak i u tom slučaju program će prvo izvršiti proračun; svesti ga na jednu cifru i izvršiti poređenje. Kad izvršite navedeni kod; rezultati će biti sledeći:


       *** RELATIONAL OPERATORS ***

a = 28
b = 5
c = false

a == b : false
a != b : true
a > b : true
a >= b : true
a < b : false
a <= b : false

Kako isti ovaj program radi, možete pogledati i na video-u:


( Java - 5. Relational Operators )

Logički operatori

Operatori za logične vrednosti deluju samo na operande tipa boolean i daju rezultat tipa boolean. Ono što trebate znati jeste da logički operatori deluju isto kao i operatori za bitove; osim što umesto bitova koriste boolean vrednosti. Logičke operatore ćete često koristiti u projektima. Pogledajte koji su to logički operatori u Java programskom jeziku:

  •          &             AND                       logička konjukcija
  •          !              OR                          logička disjunkcija
  •          ^             OR ili XOR            logička isključiva disjunkcija
  •          ||                                             kratko spojena disjunkcija
  •          &&                                         kratko spojena konjukcija
  •          !              NOT                       logična unarna negacija
  •          &=                                          dodeljivanje uz logičku konjukciju
  •          !=                                            dodeljivanje uz logičku disjunkciju
  •          ^=                                           dodeljivanje uz logičku disjunkciju
  •          ==                                           jednako
  •          !=                                            različito
  •          ?:                                            ternarni uslovni operator


Kreirajte novi program i nazovite ga logicaloperators. Unesite sledeći kod:

package com.tutorial;

public class logicaloperators {
   
public static void main(String[] args) {
       
boolean a = true;
       
boolean b = false;
       
boolean c = false;

       
System.out.println();
       
System.out.println("        *** LOGICAL OPERATORS *** ");
       
System.out.println();

       
System.out.println("a = " + a);
       
System.out.println("b = " + b);
       
System.out.println("c = " + c);
       
System.out.println();

       
c = a & b;
       
System.out.println("        a & b : " + c);

       
c = a | b;
       
System.out.println("        a | b : " + c);

       
c = a ^ b;
       
System.out.println("        a ^ b : " + c);

       
c = a || b;
       
System.out.println("        a || b : " + c);

       
c = a && b;
       
System.out.println("        a && b : " + c);

       
c = ! a;
       
System.out.println("        ! a : " + c);

       
c = a &= b;
       
System.out.println("        a &= b : " + c);

       
c = a |= b;
       
System.out.println("        a |= b : " + c);

       
c = a ^= b;
       
System.out.println("        a ^= b : " + c);

       
c = a == b;
       
System.out.println("        a == b : " + c);

       
c = a != b;
       
System.out.println("        a != b : " + c);

       
c = a == true ? b == true : b == false;
       
System.out.println("        a == true ? b == true: b == false : " + c);
       
System.out
.println();

    }
}



U navedenom programu možete videti kao što smo rekli da za logičke operatore koristimo promenjive tipa boolean. Obratite pažnju na ternarni uslovni operator. On se negde ne broji kao logički operator dok se negde broji u zavisnosti od podele. Jedno je sigurno, nešto je kompleksniji. U navedenom primeru znači; da je a tačno bez obzira da li je tačno ili netačno. Ovaj operator ali i druge dodatne operatore će te upoznati kada ih budete koristili da pojednostavite strukturu i proračune u vašim projektima. Kad izvršite ovaj kod; rezultat će biti sledeći:


       *** LOGICAL OPERATORS ***

a = true
b = false
c = false

       a & b : false
       a | b : true
       a ^ b : true
       a || b : true
       a && b : false
       ! a : false
       a &= b : false
       a |= b : false
       a ^= b : false
       a == b : true
       a != b : false
       a == true ? b == true : b == false : true

Kako isti ovaj program radi, možete pogledati i na video-u:


( Java - 6. Logical Operators )







  

 

 

 

 

 

  



No comments:

Post a Comment