понедељак, 24. фебруар 2020.

Tipovi podataka, promenjive i konstante u Java programskom jeziku


Da li znate onaj osećaj kada razmišljate u C# programskom jeziku a onda trebate da kodirate u Java programskom jeziku. Nije, da vam je sad to neki problem već vas jednostavno iritira, kao kad bi ste rekli sami sebi što da radim nešto jednostavno kad mogu isto komplikovanije. To je više osećaj jer C#  programski jezik poznajete. Ali to vam je samo na početku učenja Java programskog jezika. Sve što više budete napredovali shvatićete da je Java programski jezik u nekim složenijim i kompleksnijim situacijama mnogo jednostavniji i prosto ćete se čuditi kako C# programski jezik komplikuje stvari. Vi koji ste na mom blogu i ne znate ni jedan programski jezik, za vas će učenje Java programskog jezika biti interesantno, ali slobodno malo zavirite i u C# programski jezik na ovom blogu. Ova dva programska jezika se ne razlikuju mnogo iako su drugačiji programski jezici. Ukoliko niste dobro prostudirali prethodni post Uvod u Javaprogramski jezik, savetujem Vam da to uradite. U zavisnosti da li kodirate samo u običnom tekstualnom editoru ili u nekom od IDE Java okruženja, zavisi i kako se započinje kodiranje Java programa. Ja sam u prošlom Java postu koristio VIM tekstualni editor u Kali Linux operativnom sistemu da bi ste vi što više bili koncentrisani na Java kod. Međutim, pratioci ovog bloga hoće IDE okruženje za Java programski jezik, koriste Windows operativni sistem i insistiraju na beloj pozadini. Mislim da zahtevi imaju smisla i odlučio sam da im izađem u susret. Zato pogledajte na mom YouTube kanalu kako da instalirate Notepad++ ili Eclipse. Takođe sam linkovao video-a i u prethodnom Java postu. Sve u svemu vi sami birajte kako vama odgovara da učite Java programski jezik. Programsko okruženje može biti drugačije ali osnovni Java kod koji učite je isti.


( Java for Beginners - Play list on Manuel YouTube channel )

Kad učite Java programski jezik, primetiće te u Java programima da svaka programska aktivnost uvek se dešava u klasi i da baš ta činjenica čini Java programski jezik objektno orjentisanim kao što je C# programski jezik. Programiranje vam je u suštini veština da vi svojim kodom saopštite računaru da se ponaša na odrešen način. Kad vi programirate, vi na neki način pišete vaš kod u obliku naredbi u vidu jedne linije koda ili više grupisani redova koje zovemo iskazi. Iskaze grupišete u metode, metode u klase i sve to uglavnom radite da ne ponavljate pisanje istog koda u vašem projektu. Naravno, vaš kod mora biti svrsishodan, optimizovan, testiran i bez greške. Vi treba da znate kako se nešto programira, to učite od drugih ali isto tako neke stvari ćete programirati iz vaše glave. Takođe, postoji više načina da se isprogramira neko određeno rešenje ali se uvek traži najbolje i najjednostavnije. Što vam je kod jednostavniji manje je prostora za greške. I nemojte se zavaravati; kako god da programirate pojavljivaće se greške koje ćete ispravljati i to će vam uzimati najviše vremena. Sad je najbolje da se prvo koncentrišite na osnovne komande u Java programskom jeziku ali i na prvo što obrađujemo; a to su promenjive i konstante.

Promenjive i konstante


Promenjiva ili kako to Java programeri često nazivaju variabla je skladišna lokacija u memoriji računara kojoj dodeljujete neku privremenu vrednost. Da bi vam to bilo jasnije najbolje da promenjive zamislite kao male kutice poput kutica od šibica. Zamislite da u svaku kuticu možete staviti samo jedan broj ili slovo ili sliku itd. Znači, postoje različiti tipovi promenjivi kao i različite kutice. Ne možete u kuticu za broj da stavite slovo. Tako i u promenjivu tipa Integer ne možete da stavite neku vrednost tipa String. Za promenjive kažemo da čuvaju privremene vrednosti. To znači da promenjiva čuva vrednost dok vaš program radi. Kad ugasite program i ponovo ga pokrenete on će zaboraviti sve one vrednosti koje ste mu dodelili kad ste prvi put koristili program. Ako hoćete da vaš program pamti neku vrednost stalno vi morate tu vrednost čuvati u bazi podataka ili nekom fajlu. Tako jednostavno računari rade. Da bi vam stvari bile još jasnije najbolje da odmah pređete na kodiranje. Molim vas nemojte samo čitati blog, programirajte sa mnom. Samo kodiranjem će te naučiti programiranje. Ukoliko koristite Linux operativni sistem, otvorite Terminal, pokrenite VIM tekstualni editor ili neki Java IDE ako ga imate već instaliranog u računaru i program nazovite variables. Ako koristite IDE za Java programski jezik, nazovite i paket i projekat i klasu variables. Unesite sledeći kod:

/*
 * VARIABLES
 * 21-FEB-2020
 * MANUEL RADOVANOVIC
 */

public class variables {

       public static void main(String[] args) {
}
             
Ovo nam je neka osnova koju treba da sadrži svaka vaša konzolna aplikacija. U C# programskom jeziku imam naviku da komentar o programu pišem unutar opsega klase, što možete videti i u našem prvom Java programu. Ali ovde to nije slučaj, isto kao i što Java programeri stavljaju otvorenu vitičastu zagradu { u istoj liniji koda, tako ćemo i mi pomalo da prihvatamo kulturu i navike Java programera. Ukoliko koristite Eclipse nemojte brisati:

package variables;

Java ima tri vrste komentara. Pored navedenih koje ćete stalno koristiti postoji i dokumentacioni komentar koji počinje /** i završava se /* sekvencama. Koriste se da informacije ugradite u sam program. Sa alatkom javadoc možete da te informacije učitate i upišete u HTML datoteku. Međutim, to je neka druga opširnija tema kojom ćemo se baviti tek pred kraj Java tutorijala. U navedenom kodu smo napravili klasu i u njoj main metodu. Gotovo svaki Java program počinje pozivanjem i izvršavanjem metode main(). Obratite pažnju da u C# programskom jeziku main() metoda se piše velikim slovom Main() što nije slučaj u Java programskom jeziku. Metoda main() se sastoji od modifikatora public što znači da je to javna metoda. Ona mora biti javna da bi se mogla pozvati izvan koda klase. Ključna reč static omogućava da se metoda main() poziva bez pravljenja instance klase dok ključna reč void samo znači da metoda ne vraća nikakvu vrednost i main je rezervisan naziv za main() metodu i to se ne može menjati. Argumente koje prihvata ova metoda su tipa String koji smešta svaki ulazni karakter u jednodimenzionalan niz args. Nadam se da sada razumete detaljno navedeni kod. Sada uvezite dve klase koje želimo da koristimo zajedno sa našim programom. Jednostavno ukucajte sledeće linije iznad naziva klase:

import java.util.Calendar;
import java.util.Scanner;

Prva klasa koju uvozimo jeste Scanner koja nam omogućava da uzimamo unos korisnika u naš program, dok je druga klasa Calendar koja nam omogućava da dobijemo trenutnu godinu u Integer formatu. Dodajte sledeće linije koda unutra metode main().

// declaration the variables
String fullName;
int yearOfBirth, old;

Java programskom jeziku promenjive se naravno prvo deklarišu pre upotrebe. Deklaracija se pravi tako što se prvo navede tip promenjive a zatim promenjiva ili što bi Java programeri rekli identifikator. Naravno, naziv promenjive je case-sensitive što znači da Java programski jezik kao C#  programski jezik razlikuje mala i velika slova. Npr. Promenjiva i promenjiva nisu isto već dve različite promenjive. Naziv promenjive ne možete započeti brojem ( 3promenjiva ), isto tako naziv promenjive ne može da sadrži specijalne karaktere i ne može imati razmak. Promenjiva se inicijalizuje tako što joj se doda znak jednakosti i vrednost promenjive koja mora da odgovara tipu promenjive. Prva prethodna promenjiva je tipa String. Međutim, u javi klasa String je sasvim nešto drugo nego u C# programskom jeziku, dok druge dve promenjive su tipa Integer. Navedene promenjive nisu inicijalizovane, nije im dodata nikakva vrednost jer hoćemo da vrednost unese korisnik. Unesite sledeću liniju koda.

// declaration the constant
final int yearNow = Calendar.getInstance().get(Calendar.YEAR);

Sigurno se pitate šta je ovo sad? Verovali ili ne ovo je inicijalizovana konstanta. Konstante su vam slične promenjivim samo što kad im jednom dodelite neku vrednost, tu vrednost ne možete da menjate. Znači konstante vam služe na primer da ne morate uvek u kodu kucati kolika je PI vrednost u svom proračunu, nego napravite konstantu PI i dodelite joj samo jednom vrednost matematičke PI i onda je koristite gde god vam je ta vrednost potrebna u celom programu. Pa što bi ste to radili kada možete napraviti promenjivu? Pa zato da njenu vrednost niko nebi mogao promeniti, dobili bi ste grešku i zato što su brže. To jedino nije slučaj u PHP programskom jeziku zato što njihove promenjive koriste simbol $, tako da konstante nemaju istu vidljivost na spram promenjivih. Što se tiče vidljivosti u našem primeru; naše promenjive i konstanta imaju vidljivost samo na nivou metode main(). One se mogu kreirati i na nivou klase, ali nešto više od toga; to bi bilo globalna promenjiva što se u Java kodu smatra lošom praksom i neprihvatljivo. Isto tako u ovom našem programu ne bismo koristili konstantu za našu trenutnu godinu, jer u ovom slučaju promenjiva bi bila logičnija da se koristi, ali to je urađeno da bi smo demonstrirali kako se kreira konstanta. Ukoliko ste C# 
programer obratite pažnju da u Java programskom jeziku konstante koriste ključnu reč final umesto const. Ostala linija koda je upotreba klase Calendar i njene metode YEAR kako bi smo dobili tekuću godinu tipa Integer. Dodajte sledeći kod.

System.out.println();
             
// use the scanner to get the input from user
Scanner input = new Scanner(System.in);
             
System.out.println("What is your full name?");
fullName = input.nextLine();
             
System.out.println("Which year were you born?");
yearOfBirth = input.nextInt();
             
// close the scanner
input.close();

old = yearNow - yearOfBirth;
             
System.out.println();
System.out.println();
System.out.println(fullName + ", you have " + (old - 1) + " or " + old + " years.");
System.out.println();
             
                                             
U navedenom kodu prvo inicijalizujemo klasu Scanner koristeći argument System.in kako bi smo mogli dobiti unose od korisnika. Kada tražimo od korisnika String tada koristimo metodu nextLine() dok kod Integera nextInt(). To nema u C# programskom jeziku. U našem programu tražimo od korisnika ime i prezime, zatim godinu rođenja. Program oduzima godinu rođenja od trenutne godine i dodeljuje rezultat promenjivoj old. Konstanta se ne može menjati ali se može koristiti u proračunatima. Na kraju program ispisuje koliko imate godina. Pogledajte kako izgleda celi kod:

package variables;

import java.util.Calendar;
import java.util.Scanner;

/*
 * VARIABLES
 * 21-FEB-2020
 * MANUEL RADOVANOVIC
 */

public class variables {

       public static void main(String[] args) {
             
              // declaration the variables
              String fullName;
              int yearOfBirth, old;
             
              // declaration the constant
              final int yearNow = Calendar.getInstance().get(Calendar.YEAR);
             
              System.out.println();
             
              // use the scanner to get the input from user
              Scanner input = new Scanner(System.in);
             
              System.out.println("What is your full name?");
             fullName = input.nextLine();
             
              System.out.println("Which year were you born?");
              yearOfBirth = input.nextInt();
             
              // close the scanner
              input.close();
             
              old = yearNow - yearOfBirth;
             
              System.out.println();
              System.out.println();
              System.out.println(fullName + ", you have " + (old - 1) + " or " + old + " years.");
              System.out.println();
             
       }
}

Kad kompajlirate ovaj program, tačnije variables.java fajl komandom javac variables.java dobićete novi fajl variables.class. Taj izvršni fajl pokrenite komandom java variables i dobićete slične rezultate u zavisnosti od vašeg imena i prezimena i vaše godina rođenja:

What is your full name?
Manuel Radovanovic
Which year were you born?
1975

Manuel Radovanovic, you have 44 or 45 years.

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


( Java for Beginners - 06. Declarations of The Variables and The Constant )


Tipovi podataka u Java programskom jeziku

Ukoliko pitate nekog C# programera kako se dele tipovi podataka u C# programskom jeziku, dobićete jasan i precizan odgovor na vrednosne i referentne tipove. Međutim, podela tipova u Java programskom jeziku ima drugačiju podelu, pa se deli na proste tipove podataka i na složene tipove podataka. Prosti tipovi podataka su booelan, byte, char, short, int, long, float, double dok su složeni nizovi i objekti.

Prosti tipovi

·         Celobrojni
1.       byte
2.       short
3.       int
4.       long
·         Sa pokretnim zarezom
1.       float
2.       double
·         Znakovni
1.       char
·         Logički
1.       boolean

Složeni tipovi

1.       Nizovi
2.       Objekti

Java programskom jeziku imate manje tipova promenjivih nego u C# programskom jeziku. Java programski jezik je strogo tipiziran jezik. Za razliku od C# programskog jezika, prosti tipovi nisu objekat ili na primer String nije skup znakova već je to u Java programskom jeziku sasvim nešto drugačije. Na primer tip podataka Integer je uvek 4 bita dok u C# programskom jeziku to zavisi od vašeg procesora i operativnog sistema. U Java programskom jeziku tipovi promenjivih moraju biti strogo određeni zato što Java programski jezik funkcioniše na različitim operativnim sistemima. Vi možete praviti vlastite složenije tipove podataka baziranim na prostim tipovima u Java programskom jeziku ali nema automatskog nametanja tipa podataka niti pretvaranja nekompatibilnih tipova podataka. Zar ovaj Java programski jezik nije interesantan? Meni lično je zaista čudan i nekako drugačiji. Napravimo novi program i nazovite ga variabletypes. Unesite odmah celi kod programa. Nemojte koristiti copy – paste već kucajte kod da osetite kako je kodirati u Java programskom jeziku. Takođe ćete bolje pamtiti.

package typeofvariables;

/*
 * TYPE OF VARIABLES
 * 21-FEB-2020
 * MANUEL RADOVANOVIC
 */

public class typeofvariables {

       public static void main(String[] args) {
             
              System.out.println();
              System.out.println(" TYPE OF VARIABLES");
              System.out.println();
             
              byte byteMin = Byte.MIN_VALUE; // 1 byte
              byte byteMax = Byte.MAX_VALUE;
              System.out.println(" byte: Minimum: " + byteMin + " Maximum: " + byteMax + " - byte 1");
             
              short shortMin = Short.MIN_VALUE; // 2 bytes
              short shortMax = Short.MAX_VALUE;
              System.out.println(" short: Minimum: " + shortMin + " Maximum: " + shortMax + " - bytes 2");
             
              int intMin = Integer.MIN_VALUE; // 4 bytes
              int intMax = Integer.MAX_VALUE;
              System.out.println(" int: Minimum: " + intMin + " Maximum: " + intMax + " - bytes 4");
             
              long longMin = Long.MIN_VALUE; // 8 bytes
              long longMax = Long.MAX_VALUE;
              System.out.println(" long: Minimum: " + longMin + " Maximum: " + longMax + " - bytes 4");
             
              System.out.println();
             
              float floatMin = Float.MIN_VALUE; // 4 bytes
              float floatMax = Float.MAX_VALUE;
              System.out.println(" float: Minimum: " + floatMin + " Maximum: " + floatMax + " - bytes 4");
             
              double doubleMin = Double.MIN_VALUE; // 8 bytes
              double doubleMax = Double.MAX_VALUE;
              System.out.println(" double: Minimum: " + doubleMin + " Maximum: " + doubleMax + " - bytes 4");
             
              System.out.println();
              System.out.println(" bool can be true or fals. - 1 byte");
              System.out.println(" char can have only one character - 2 bytes.");
              System.out.println(" String can have more than 2 billions characters.");
              System.out.println();
             
       }
}

Prvo što možete primetiti da u navedenom primeru ne morate importovati ni jednu klasu. Svaki prosti tip ima minimalnu MIN_VALUE i maksimalnu MAX_VALUE maksimalnu statičku metodu, što nam omogućava da lako kažete programu da vam prikaže minimalne i maksimalne vrednosti svakog primitivnog tipa podataka. Obratite pažnju na:

System.out.println();

Ovu liniju koda koristite kada želite da preskočite red u konzoli ili terminalu. Kako da izbrišete celi ekran? Mislim da to ne možete da radite kada koristite Windows operativni sistem. To nije jednostavno kao u C# programskom jeziku jer Java programski jezik ne pripada Microsoft korporaciji. Pokrenite ili kompajlirate program, rezultati će biti isti bez obzira koji računar ili operativni sistem koristite.

TYPE OF VARIABLES

byte: Minimum: -128 Maximum: 127 - byte 1
short: Minimum: -32768 Maximum: 32767 - bytes 2
int: Minimum: -2147483648 Maximum: 2147483647 - bytes 4
long: Minimum: -9223372036854775808 Maximum: 9223372036854775807 - bytes 4

float: Minimum: 1.4E-45 Maximum: 3.4028235E38 - bytes 4
double: Minimum: 4.9E-324 Maximum: 1.7976931348623157E308 - bytes 4

bool can be true or fals. - 1 byte
char can have only one character - 2 bytes.
String can have more than 2 billions characters.

Kako se kodira navedeni program isto možete pogledati i na video-u:


( Java for Beginners - 07. Minimum and Maximum Values of The Variable Types )












Нема коментара:

Постави коментар