Rodomi pranešimai su žymėmis Java. Rodyti visus pranešimus
Rodomi pranešimai su žymėmis Java. Rodyti visus pranešimus

2017 m. spalio 23 d., pirmadienis

Java Aplinka

Java iš komandinės eilutės

Java komandinės eilutės įrankių aprašymai: http://docs.oracle.com/javase/6/docs/technotes/tools/index.html#basic

Pagrindiniai:

  • javac - java kompiliatorius.
  • java - naudojama paleisti Java programoms.
  • jar - JAR failų ruošimo įrankis.

javac naudojimas ir parametrai

javac [options] [sourcefiles] [classes] [@argfiles]

Pagrindiniai “nustatymai”:
-cp arba -classpath - kabliataškais atskirti keliai iki jar failų ar aplankų su *.class failais. Nenurodžius naudojamas sistemos kintamasis CLASSPATH.
-d katalogas - nustatoma, į kokį katalogą patalpinti sukompiliuotą kodą.
-sourcepath sourcepath - nustatoma iš kur imti klasių kodą. Gali būti direktorijos, zip ir jar failai, atskiriami “;”. Klasės rastos classpath gali būti perkompiliuojamos, jei jos randamos ir sourcepath.
Sourcefiles - tai failai, kuriuos norime kompiliuoti.
classes - class failai, kurie apdorojami ieškant annotacijų. Plačiau neaptarsime.
@argfiles - options ir sourcefiles rinkiniai surašyti į failus

Kas yra JAR failai

  • JAR = Java ARchive files. Tai iš esmės zip failai, su specialia struktūra.
  • Idealiu atveju - tai nuo sistemos nepriklausantys vykdomi failai, kuriuose surenkami daugelis Java programai reikalingų failų (pvz paveikslėlių).
  • Pagrindinėms operacijoms naudojamas jar įrankis, kuris yra dalis JDK.
Sukurti JAR failą: jar cf jar-file input-file(s)
  • c - create, f - rezultatas turėtų būti failas, rašomi be tarpų, gali būti bet kokia tvarka.
  • jar-file - norimo jar failo pavadinimas.
  • input-file(s) - tarpu atskirtų failų ar direktorijų sąrašas (direktorijos bus automatiškai išskleidžiamos į failų sąrašus).
  • Peržiūrėti JAR failo turinį : jar tf jar-file 
  • t - table of contents, rodo kad norime peržiūrėti turinį; f - reiškia, kad taikomės į failą, kurį nurodysime komandinėje eilutėje
  • jar-file - pavadinimas failo, kurio turinį norime peržiūrėti.
Išskleisti JAR failą - jar xf jar-file [archived-file(s)]
  • x - nurodoma, kad norime išskleisti jar failą; f - kad failą nurodysime komandinėje eilutėje.
  • jar-file - failas, kurį norime išskleisti.
  • [archived-file(s)] - failai JAR faile, kuriuos norime išskleisti. Jei nenurodyti detaliai - išskleidžiami visi.
  • išskleistas JAR failo turinys bus patalpintas į direktoriją, kurioje vykdoma komanda, išlaikant vidinę JAR failo aplankų struktūrą.
Papildyti JAR failą: jar uf jar-file input-file(s)
  • u - update, nurodo, kad bus pildomas failas; f - kad faila bus nurodytas komandinėje eilutėje.
  • jar-file - failas, kurį norėsime papildyti.
  • input-file(s) - tarpais atskirtų failų sąrašas, kuriuos norėsime įkelti į JAR failą.
  • Failai jau esantys JAR’o viduje bus pakeisti naujais.
JAR failai: vykdymas

JAR failus galima paleisti (įvykdyti), JEI:

Programa paleidžiama iš komandinės eilutės ir supakuota į JAR failą paleidžiama taip: 
java -jar jar-file
META-INF/MANIFEST.MF faile turi būti nurodyta Main klasė įrašant tokią eilutę: Main-Class: classname

JAR Manifest failai
  • JAR failai gali būti pasirašomi elektroniniu būdu, tvarkomi kodo versijavimo sistemose, užtikrinti paketo vientisumą (sealing a package).
  • Šioms funkcijoms reikalinga informacija saugoma manifest faile (META-INF/MANIFEST.MF, sukuriamas pagal nutylėjimą jar įrankio kuriant patį JAR failą)

Manifest failo keitimas JAR’e

jar cfm jar-file manifest-addition-file input-file(s)
  • c - jar failo kūrimas, f - nurodymas, kad jar failo pavadinimas bus komandinėje eilutėje, m - nurodymas, kad esamas JAR failas apjungiamas su manifest addition-file turiniu.
  • manifest-addition-file - tekstinis failas, kurio turiniu bus papildytas dabar egzistuojantis manifest failas.
Nustatant EntryPoint klasę galima naudoti komandą: 

jar cfe jar-file-name package.MainClassName input-file(s)
  • e - nurodo, kad bus nustatomas main klasės pavadinimas
  • package.MainClassName - main klasės paketas ir pavadinimas atitinkamai.
Classpath

  • Classpath - tai stringas iš nuorodų atskirtų “;” į vartotojo sukurtas klases. Šios nuorodos reikalingos įvairiems Java įrankiams ir programoms (pvz javac, java ir t.t.)
  • Classpath nuorodos rodo į jar ir zip failus arba class failų direktoriją. Jei kalba eina apie class failus direktorijoje - užtenka nurodyti kelią iki aukščiausio lygio paketo direktorijos.
  • Classpath galima nustatyti kaip sistemos kintamąjį ‘CLASSPATH’ arba kiekvienu atveju individualiai kviečiant java įrankius nurodžius parametrą -classpath.
  • “*” wildcard naudojimas reiškia, kad visi direktorijoje esantys jar failai bus įtraukti į classpath, bet .class failai -ne.
  • Visi *.class failai iš foo bus įtraukti į classpath įrašius tiesiog “foo”.
  • Java paketų, nepaisant to, kad jie atvaizduojami kaip katalogai failų sistemoje, nereikia rašyti į classpath.
Classpath tvarkymas

1. Maven - paruošiama lokali bendra classpath direktorija, kuria visi sutartinai naudojasi per CLASSPATH sistemos kintamąjį.
2. Rankomis Eclipse “Project properties”->.classpath failas projekto direktorijoje. Jo padavimas programai paleidimo metu - Eclipse reikalas.
3. “Po plika Java” - nustatant -classpath/-cp parametrus arba sistemos kintamąjį CLASSPATH http://docs.oracle.com/javase/7/docs/technotes/tools/windows/classpath.html

Classloader
  • Classloading - tai mechanizmas, kuris ieško reikalingų klasių Java programos veikimui.
  • Absoliučia dauguma atvejų naudojamas standartinis classloading mechanizmas, kurį pateikia JRE.
  • Klasių ieškoma iš eilės šiose vietose:
    • Bootstrap klasės: veikimui būtinos runtime klasės iš rt.jar, internationalization klasės iš i18n.jar ir pan.
    • Instaliuoti plėtiniai specialiuose kataloguose: JRE instaliaciniame kataloge lib/ext; Specializuotuose OS plėtinių saugyklose (nuo Java6), pvz /usr/jdk/packages/lib/ext naudojant Solaris.
    • Classpath nurodytuose jar ir zip failuose, direktorijose (tokia tvarka, kaip jie išvardinti classpath).

2017 m. spalio 22 d., sekmadienis

Darbas su duomenimis

Darbas su duomenimis


  • Įvestis ir išvestis (io streams, buffers)
  • Properties file usage
  • Duomenų tipų konvertavimas
  • Autoboxing and Unboxing


Java duomenų srautai

  • Byte srautai - bitų duomenų skaitymui ir rašymui.
  • Character srautai - naudojami tekstinių simbolių rašymui ir skaitymui, automatiškai apdorojant vertimą į ir iš VM aplinkoje nustatytų simbolių rinkinių.
  • Buffered srautai - skirti optimizuoti sistemos žemo lygio kvietimų skaičių.
  • Scanning ir Formatting srautai - padeda programai rašyti ir skaityti formatuotą tekstą.
  • Command line I/O - darbui su komandine eilute.
  • Data Streams - naudojami primityvių duomenų ir String’ų rašymui/skaitymui.
  • Object Streams - naudojami įvairių objektų binariniam rašymui/skaitymui.


Darbas su srautais

  1. Klaidų apdorojimas - nepamiršti try-catch.
  2. Srautai turi būti atidaromi ir uždaromi tvarkingai.
  3. Paprastų srautų pavyzdžiai:
    1. Byte - FileInputStream, FileOutputStream
    2. Character - FileReader, FileWriter
    3. Simbolių eilučių - BufferedReader, PrintWriter.
    4. System.in,System.out,System.err, System.console()
    5. Duomenų srautai: DataInputStream ir DataOutputStream.
  4. Objektų srautai - ObjectInputStream and ObjectOutputStream

Trys standartiniai srautai, kuriuos visada galima panaudoti:
  • System.in - InputStreamReader cin = new InputStreamReader(System.in);
  • System.out - System.out.println("Some randome text.");
  • System.err - System.err.println("No console.");
Console
  • Sukūrimas - Console c = System.console();
  • Gali būti naudojamas slaptažodžių nuskaitymui.

Darbas su failais

java.nio.file.Path - nuo Java7. Java.io.File su ankstesnėmis versijomis.
Veiksmai su failais / aplankais.
Failų kūrimas, skaitymas ir rašymas.


java.nio.file.Path, java.io.File

  • java.nio.file.Path - nuo Java7.java.io.File - ankstesniais atvejais.
  • Pagrindinės išspręstos java.io.File problemos:
  • Senesnės versijos gražinami klaidos pranešimai buvo neinformatyvūs.
  • Problemos su metodais: nepatikimas rename veikimas, prastas veikimas esant dideliam
  • apkrovimui.
  • Nepatikimas failų sistemos simbolinių nuorodų (“Symbolic links”) veikimas.
  • Nepakankamas rinkinys priemonių darbui su meta duomenimis.

Veiksmai su failais/aplankais

  • Path - kelias iki failo duotoje failų sistemoje
    • Pvz /home/katalogas/failas1.txt arba c:\users\katalogas\failas1.txt
  • Patikrinti ar egzistuoja/pasiekiamas - Files.exists, Files.notExists
  • Ištrinti - delete(Path), deleteIfExists(Path)
  • Kopijuoti - Files. copy(Path, Path, CopyOption...)
  • CopyOption - tai papildomų parametrų sąrašas atskirtas kableliais arba masyvas CopyOption[]. Galimos reikšmės: REPLACE_EXISTING, COPY_ATTRIBUTES, NOFOLLOW_LINKS.
  • Perkelti - move(Path, Path, CopyOption...)

Failų kurimas:
  • createFile(Path, FileAttribute<?>)
  • createTempFile(Path, String, String, FileAttribute<?>)
  • createTempFile(String, String, FileAttribute<?>)

Properties failo naudojimas

Properties failas naudojamas key-value reikšmėms saugoti.
Properties reikšmės naudojamos sistemos veikimo konfigūravimui, pvz - atsisiuntimų išsaugojimo vieta.
Raktas ir reikšmė visada String tipo.
Java aplinka visada palaiko sistemos aplinkos konfigūracijos failą. Daugiau apie sistemos konfigūracijos savybes čia

properties panaudojimas

Pagrindiniai Properties objekto metodai:
  • contains(Object value), containsKey(Object key)
  • getProperty(String key), getProperty(String key, String default)
  • list(PrintStream s), list(PrintWriter w)
  • elements(), keys(), and propertyNames(), stringPropertyNames()
  • size()
  • setProperty(String key, String value)
  • remove(Object key)

Duomenų tipų konvertavimas

Galimi duomenų konvertavimai (conversion) Java kalboje: http://docs.oracle.com/javase/specs/jls/se7/html/jls-5.html
  • Plėtimas (Widening primitive) - primityvaus duomenų tipo praplėtimas vyksta, kai mažesnio tikslumo tipas konvertuojamas į didesnio tikslumo tipą.
  • Primityvųs tipai jų tikslumo didėjimo tvarka: byte, short, int, long, float ir double.
  • Priešingas konvertavimas vadinamas siaurinimo (Narrowing primitive), tačiau jis naudojamas retai ir turi būti naudojamas atsargiai, kadangi yra galimybė prarasti informaciją.
  • Objekto bendrinimas (Widening reference) - objektą visada galima laikyti jo tėvinės klasės objektu.
  • Objekto siaurinimas/specializacija (Narrowing reference) - objektą galima laikyti tėvinės klasės subklasės objektu tik atlikus tinkamus veiksmus (jei įmanoma išvis).
Autoboxing ir Unboxing - primityvių tipų konvertavimas į atitinkamus objektus ir atgal, 
pvz:
int -> Integer yra vadinamas autoboxing, Integer -> int - Unboxing. Kiti galimi variantai: boolean
  • Unchecked conversions
  • Capture conversions
  • String conversions
  • Value set conversions
Autoboxing ir Unboxing

Autoboxing - “kintamojo įdėjimas į objekto dėžutę”, pvz int į Integer. Unboxing - “objekto transformavimas į primityvų tipą”, pvz Byte į byte. Konvertavimas vykdomas: perduodant kintamuosius kaip parametrus, jei metodas tikisi atitinkamo Objekto arba primityvios reikšmės. Priskiriant primityvią reikšmę objektui arbaatvirkščiai.

2017 m. spalio 21 d., šeštadienis

Java kolekcijos

java.util.Collection - pagrindinis kolekcijų interfeisas. Žymi elementų rinkinį ir įgyvendina java.util.Iterable - kolekcijas galima naudoti foreach sakinyje.
java.util.List - kolekcija sauganti surikiuotus elementus (sąrašas)
java.util.Set - kolekcija sauganti unikalius elementus (aibė)
java.util.SortedSet - kolekcija sauganti surūšiuotus unikalius elementus (surūšiuota aibė)


Foreach

ArrayList<String> eilutes = new ArrayList<>();

for (String eilute: eilutes) {
System.out.println(eilute);
}

Pagrindinės List realizacijos

java.util.ArrayList - realizacija paremta dinamiškai augančiu masyvu
  • Greitesnė iteracija
  • Kompaktiškas
  • Greitesnis iterpimas gale ar arti galo
  • Greitesnė prieiga prie n-tojo elemento
java.util.LinkedList - realizacija paremta dvipusiu sąrašu
  • Greitesnis įterpimas į sąrašo vidurį
  • Greitesnis šalinimas iš sąrašo vidurio
List pavyzdys

List<Integer> skaiciai = new ArrayList<>();
skaiciai.add(4);
skaiciai.add(5);

for (Integer skaicius: skaiciai) {
System.out.println(skaicius);
}

Pagrindinės Set ir Sorted realizacijos

  • java.util.Set
    • java.util.HashSet - realizacija paremta HashMap
  • java.util.SortedSet
    • java.util.TreeSet - realizacija paremta TreeMap
java.util.Map

Kolekcija sauganti elementų poras (K, V), kur K raktas pagal kurį galima surasti V.
Pavyzdžiui galime į kolekciją dėti automobilių objektus pagal jų numerį.


Map realizacijos

java.util.HashMap - saugo elementus pagal rakto maišos (hash) funkciją
java.util.LinkedHashMap - saugo elementus kaip ir HashMap, papildomai saugodamas ir elementų tvarką.
Aiški elementų iteracijos tvarka (pagal įdėjimo arba priėjimo tvarką).
java.util.TreeMap - saugo elementus dvejetainiame medyje. Aiški elementų iteracijos tvarka (pagal raktą).

Map pavyzdys

HashMap<Integer, String> skaiciuVardai = new HashMap<>();
skaiciuVardai.put(1, “Vienas”);
skaiciuVardai.put(2, “Du”);
skaiciuVardai.put(3, “Trys”);

System.out.println(skaiciuVardai.get(2));


hashCode() ir equals()

  • Visi objektai įgyvendina hashCode() ir equals()
  • Pagal nutylėjimą realizacijos paveldimos iš java.lang.Object
    • Neteisingos tipiniams naudojimo atvejams
equals()

  • Standartinis atsako į klausimą “Ar tai tas pats objektas?” (lyg lyginant su ==)
  • Kontraktas sako, kad turėtų atsakyti “Ar tai toks pat objektas?”
  • Perrašome, tam kad du tokie patys objektai galėtų būti
    • lygūs. Pvz.: sukurkime du skaičiaus objektus:
    • Integer penki = new Integer(5);
    • Integer kitasPenki = new Integer(5);
    • Jei būtų naudojamas standartinis equals(...) objektai nebūtų lygūs
• Paprastai įgyvendinamas lyginant laukų reikšmes.
• IDE paprastai moka sugeneruoti

hashCode()

Panaudojamas HashMap objektų dėliojimui į “kibirus”. Nuo teisingos ir geros realizacijos priklauso ar objektą bus galima teisingai panaudoti kaip HashMap raktą. Pasak equals() lygių metodų hashCode() turi grąžinti vienodą reikšmę.IDE moka sugeneruoti teisingą


Palyginami objektai

  • Palyginami objektai gali būti “didesni” ar “mažesni” vieni už kitus (arba “pirmesni” ir “paskesni”)
  • Palyginami objektai įgyvendina java.util.Comparable interfeisą.
  • Tokie objektai talpinami į sąrašus gali būti išrūšiuojame.

java.util.Comparator

  • Intefeisas leidžiantis įgyvendinti rušiavimo tvarkos nustatymo algoritmą nerūšiuojamiems objektams
  • Naudojamas TreeSet, TreeMap

2017 m. spalio 20 d., penktadienis

Programų testavimas ir derinimas

Programų testavimas ir derinimas

  • Java išimčių gaudymas (sakiniai try, catch ir finally)
  • Java išimčių apibrėžimas ir gaudymas
  • Standartinis Java logging mechanizmas
  • JUnit karkasas, TDD
  • Eclipse derinimo mechanizmas

Java išimtys (exceptions)
  • Java išimtys įvyksta, kai sutrikdomas normalus programos veikimas (pavyzdžiui dalyba iš 0, bandymas nuskaityti neegzituojančio objekto lauką, t.t.)
  • Java kalboje išimtys valdomos try-catch sakinių pagalba.
  • Tinkamai parašyta Java paprograme turi apdoroti arba deklaruoti galimas klaidas.
Išimčių tipai - tikrinamos išimtys

Tikrinami (checked) - išimtys, nuo kurių programa neturėtų nulūžti ir su kuriomis turi galėti susidoroti.
Taip vadinami, nes jų tvarkymas tikrinamas kompiliuojant
Galimų išimčių sąrašas yra metodo apibrėžimo dalis.
Naudojant metodą reikalaujama, kad tikrinamos išimtys būtų apdorotos naudotojo kode.
Tai visos išimtys išskyrus tas, kurios yra Error, RuntimeException ar jų plėtiniai.

Klaidos - (errors) tai išimtys nuo kurių programos gali atsigauti arba ne, priklausomai nuo autoriaus pasirinkto apdorojimo. Tai klasės Error ir jos plėtinių tipo klaidos. Pavyzdžiui - disko skaitymo klaida: programa gali nuspręsti lūžti arba pranešti vartotojui, kad failas, nors ir atidarytas - bet negali būti nuskaitytas.

Veiklos sutrikimai (runtime exceptions) - klaidos, nuo kurių programa nulūžta jos veikimo metu.
Įvykus runtime išimtims nebesitikima, kad programa gali toliau normaliai veikti, todėl jų specialaus jų apdorojimo kompiliatorius nereikalauja.  Dažniausiai tai RuntimeException klasės ir jos plėtinių tipo klaidos. Pavyzdžiui programos tikslas yra gaminti kėdes ir staiga į konvėjerį patenka stalas, kurį bandant apdoroti gali sugriūti viskas ARBA tiesiog neaišku, kaip stalo atsiradimą apdoroti.

Unchecked išimčių kontraversija

Tikrinamų klaidų naudojimas pagerina programos veikimo aiškumą ir reikalavimų naudotojui aiškumą. Jei tai naudinga - kodėl nedaryti visų išimčių tikrinamomis? Nes neviską programa gali apdoroti ir jaudintis dėl kietojo disko gedimo rašant kalkuliatoriaus programą nėra
prasmės.
 Trumpai: jei galima ir logiška tikėtis, kad metodo naudotojas gali ir/ar turėtų apdoroti kažkokią specifinę išimtį - reikėtų naudoti tikrinamas išimtis, kitu atveju - ne.

Logging elementai

• Logger - objektas, naudojamas žinutėms kurti. Dažniausiai tiesiogiai siejamas su klasės pavadinimu.
• Handler - žurnalo žinučių tvarkymui naudojami objektai (pvz atspausdinti konsolėje, įrašyti į failą, etc.)
• Filter - žurnalo žinučių filtravimui naudojami objektai (pvz - tik žinutės iš mano klasės, tik žinutės su daugiau nei 20 simbolių)
• Formatter - žurnalų žinučių formatavimui naudojamas objektas. Retai keičiamas.
• LogManager - žurnalų tvarkymo objektas, sukuriamas Java sistemos. Dažniausiai jo naudoti nereikia.

Java logging - žinučių svarba

  • SEVERE (highest value)
  • WARNING
  • INFO
  • CONFIG
  • FINE
  • FINER
  • FINEST (lowest value)
  • Nurodžius pvz INFO - įrašomos visos INFO ir svarbesnės žinutės, bet ignoruojamos žemesnės svarbos.
JUnit pagrindinės taisyklės
  1. Testai turi būti trumpi ir testuoti konkrečius dalykus.
  2. Testas turi būti bendros formos “<esant pradinei situacijai> <kai įvykdomi veiksmai> <turi būti gautas rezultatas>” (given-when-then).
  3. Testo metodo pavadinimas turi apibūdinti, ką tas testas tikrina, pvz:. ordersShouldBeCreated.
Eclipse derinimo mechanizmas
  • Pagrindinės derinimo sąvokos/komandos.
  • Programos paleidimas derinimo režimu.
  • Kintamųjų stebėjimas, keitimas.
  • Išraiškų vykdymas.
  • Web aplikacijų derinimas.

Derinimas - Sąvokos
  • Breakpoint - sustojimo taškas. Programa paleista derinimo rėžimu sustos šioje vietoje ir nevykdys toliau einančio kodo.
  • Conditional breakpoint - sustojimo taškas, jei tenkinama sąlyga.
  • Watch(a.k.a.expression) - laukas ar reiškinys, kurio reikšmė stebima derinimo metu.

2017 m. spalio 19 d., ketvirtadienis

Java kalbos sintaksė

Primityvūs duomenų tipai

1. byte - skirtas saugoti sveikus skaičius nuo -128 iki 127. Naudojamas didelės apimties duomenims, kai svarbu efektyviai naudoti atmintį.
2. short - panašiai kaip ir byte - nedaug vietos užimantis sveikiems skaičiams saugoti skirtas duomenų tipas reikšmėms nuo -32768 iki 32767.
3. int - naudojamas sveikiems skaičiams nuo -2^32 iki +2^32 - 1 saugoti.
4. long - naudojamas sveikiems skaičiams nuo -2^63 iki 2^63-1 saugoti.
5. float - 32 bitų laukas naudojamas slankaus kablelio skaičiams saugoti. Netinka tikslioms reikšmėms
saugoti, bet efektyviai naudojamas, kai svarbu tausoti atmintį.
6. double - 64 bitų laukas naudojamas slankaus kablelio skaičiams saugoti. Netinka tikslioms
reikšmėms saugoti, bet efektyviai naudojamas, kai svarbu tausoti atmintį.
7. boolean - naudojamas taip/ne reikšmėms saugoti.
8. char - vienas teksto simbolis (t.y. viena raidė, taškas, tarpas ir pan.).

String duomenų tipas


  • Naudojamas simbolių eilutei saugoti.
  • Sudarytas iš primityvių char simbolių.
  • String objektas nėra primityvus duomenų tipas.
  • Specialus char simboliai: \t (tab), \n (line feed), \" (double quote), \' (single quote), ir \\ (backslash).
  • null reikšmė.


Masyvai
• Masyvai skirti saugoti kelioms vienodo tipo reikšmėms.
• Masyvo dydis nurodomas jį kuriant: 

int[] integerArray = new int[10];

• Masyvo elementai pasiekiami nurodant elemento indeksą, kuris prasideda nuo 0:

 integerArray[0] = 1;

• Masyvus galima sukurti naudojantis supaprastinta sintakse: 

int[] integerArray = {1, 2, 3, 4, 5};


Reiškiniai

Reiškiniai yra sudaryti iš kintamųjų, operatorių ir
paprogramių iškvietimų. Pavyzdžiai paryškinti:

int cadence = 0;
anArray[0] = 100;
System.out.println("Element 1 at index 0: " + anArray[0]);

int result = 1 + 2; // result is now 3
if (value1 == value2)
System.out.println("value1 == value2");

Reiškiniai visada grąžina reikšmę, kurios tipas priklauso
nuo panaudotų kintamųjų ir operatorių.

Sakiniai

Sakiniai Java kalboje daugmaž atitinka įprastos kalbos
sakinius, kuriais kalbame.
Sakiniai praktiškai visada baigiami ; ženklu
Kai kurie reiškiniai gali būti sakiniais.
Sakinių pavyzdžiai:

// Priskyrimo sakinys
aValue = 8933.234;
// Reikšmės padidinimo sakinys
aValue++;
// paprogramės iškvietimo sakinys
System.out.println("Hello World!");
// objekto sukūrimo sakinys
Bicycle myBike = new Bicycle();


Sudėtingi sakiniai

Reikalingi kodo vykdymo sąlygoms, išsišakojimams ir pasikartojimams valdyti.
Java kalboje naudojami :
  • if-then / if-then-else
  • switch
  • for
  • while
  • do-while
  • break
  • continue
  • return
http://docs.oracle.com/javase/tutorial/java/nutsandbolts/flow.html

break, continue, return

Break - išeina iš paskutinio ciklo arba switch sakinio.
“labeled break” - išeina iš pažymėto ciklo ar switch sakinio.
Continue - nutraukia ciklo bloko vykdymą ir pereina prie kitos
ciklo iteracijos.
Return - nutraukia paprogramės vykdymą ir gali grąžinti
rezultatą.

return

• Grąžina kodo vykdymą į tą vietą, kurioje buvo iškviesta
paprogramė.
• Gali negrąžinti jokios reikšmės arba grąžina po return
sekančio reiškinio reikšmę.


Pagrindiniai metodo elementai

  1. Metodo tipas - public, private, protected.
  2. Grąžinamos reikšmės tipas arba raktinis žodis void jei metodas negrąžina jokios reikšmės.Privalomas.
  3. Paprogramės pavadinimas. Privalomas
  4. Parametrų sąrašas skliausteliuose () - parametrai atskiriami kableliu, kiekvienam parametrui nurodomas tipas ir pavadinimas. Jei nėra parametrų - naudojami tušti skliausteliai.
  5. Galimų klaidų (exception) sąrašas.
  6. Paprogramės kodas tarp {} skliaustelių. Privaloma dalis, nors gali būti tuščia.

Paprogramės (methods)

  • Metodo pavadinimus rekomenduojama sieti su pavadinimu veiksmo, kurį
  • atliksime. Pavyzdžiui “nuskaityti”, “bėgti”, “pažaliuoti”.
  • Metodai atpažįstami pagal savo “parašą” (signature and overloading), kurį
  • sudaro pavadinimas ir parametrai.

Papildomi skaitiniai

2017 m. spalio 18 d., trečiadienis

Java Įvadas

IDE

• Integrated Development Environment
• Palengvina kūrimo procesą
• Valdo sąranka
• Palengvina darbą su kodu
• Palengvina darbą su dideliais projektais
• Integruoja daug įrankių į vieną paketą (kompiliatorių, surinkėją, derintoją, versijų valdymo sistemą, kodo kokybės inspektavimo įrankius, ...)


Eclipse

• Integruota kūrimo aplinka (angl. Integrated Development
Environment)
• Palengvina programų rašymą, testavimą, derinimą,
surinkimą

Naudingos eclipse kombinacijos

• Ctrl+Shift+T - ieškoti tipo (klasės, baigtiniai tipai, ...)
• Ctrl+Shift+R - ieškoti resurso (kitų tipų failų)
• Ctrl+Shift+F - suformatuoti kodą pagal apibrėžtą standartą
• Ctrl+Z - atšaukti paskutinį veiksmą
• Ctrl+Space - rodo galimus tekstinės išraiškos pabaigos variantus (“autocomplete”)
• Pažymėjus simbolį (tekstinį elementą)
• F3 - nukelia į apibrėžimą ar deklaraciją
• F4 - parodo tipų hierarchiją (jei pažymėtas tipas ar jo elementas)
• Ctrl+Alt+H - parodo metodus, kurie naudoja elementą


Greitas įvadas į klases ir objektus

• Klasė apibrėžia koks bus sukurtas objekto egzempliorius
• Ką jis žino (laukai)
• Ką jis moka (metodai)


Kas yra Java?

• Platforma
• Programavimo kalba
• Standartinė biblioteka
• Virtuali mašina
• Kūrimo įrankiai

Standartinė biblioteka

• Turtinga biblioteka įgyvendinantį dažniausiai naudojamą
funkcionalumą:
• Duomenų struktūros (sąrašai, medžiai, ...)
• Darbas su failais
• Darbas su tinklu
• Darbas su formatais (Properties, XML, ZIP, JPG, ...)
• Daugiagijo modelio palaikymas
• Vartotojo sąsajos kūrimas

Virtuali mašina

• Vykdo Java kodą
• Optimizuoja esamai sistemai
• Abstrakcija užtikrinanti Java programų nepriklausomumą
nuo platformos

Skirtingi Java paketai

• JRE  - norintiems paleisti programas
• JDK - norintiems kurti programas


Primityvieji tipai

byte x = -10; // Skaičius su ženklu (-128..127); 8 bitai
short x = 1000; // Skaičius su ženklu (-32768 ... 32767); 16bit
int x = 102224; // Skaičius su ženklu; 32bit
long x = 2344445; // Didelis skaičius su ženklu; 64bit
float x = 32.44f; // Skaičius su slankiuoju kableliu; 32bit
double x = -31.443; // Skaičius su slankiuoju kableliu; 64bit
boolean x = true; // Dvinaris true arba false
char x = ‘A’; // Simbolis; 16bit

Klasė: narių matomumas

  • private - matomas tik pačios klasės viduje (jos metoduose)
  • protected - leidžia matyti paveldinčioms klasėms, bei klasėms tame pačiame pakete
  • package (kai nieko nenurodyta) - leidžia matyti klasėms tame pačiame pakete
  • public - mato, gali kviesti ir naudoti visi

Interfeisas

• Visiškai abstrakti klasė
• Kitos klasės gali įgyvendinti kiek tik nori
• Naudojama aprašyti kontraktams
• Aš galiu dirbti su tuo kas moka X
• Jei įgyvendinu X, tai galiu būti naudojamas ten kur moka dirbti su X

Kolekcijos: Set

• Unikalių elementų rinkinys
• Elementų vietos atsiminti negerantuoja
• Unikalumo užtikrinimas veiks, tik jei yra teisingos hashCode() ir equals() realizacijos


Kolecijos: SortedSet

• Išrūšiuotų unikalių elementų rinkinys
• Naudojant TreeSet
• privalu arba turėti elementus, kurie įgyvendina Comparable<T> interfeisą
• Arba perduoti Comparator<T> objektą, kuris mokės tuos elementus palyginti

Etiketės