Piebiedrojies Start(IT)! Attīstīsim IT izglītību kopā! Java Ievads Augusts 2014 Materiālu publicēšana tikai saskaņā ar Start(IT)
Saturs Kas ir Java? Pirmā Programma Darbs ar mainīgajiem Sazarojumi un cikli Masīvi Metodes Virknes Copyright 2011 Accenture 2
Kas ir Java? Javas sākums 1991 Pirmais nosaukums bija «Oak» (Ozols) Java bija uzbūvēta «set-box» vajadzībām (ierīces kābeļtelevīzijai) Java ir divu valodu savienojums - C++ populāra programēšanas vide - SmallTalk objekt-orientēta valoda
Kas ir Java? (turpinājums) Java ir pilnīgi Objekt-Orientēta vide Java ir daudz pavedienu platforma, kas ļauj palaist vairākus procesus paralēli Java Kods ir neatkarīgs no izpildes platformas (Windows, Linux etc) Java Virtuālā Mašīna uzņem atbildību par atmiņas vadību (Java Garbage Collector automātiski atbrīvo atmiņu no objektiem kas vairs netiek izmantoti)
JDK un JRE Java Platforma sastāv no divām komponentēm JDK (Java Development Kit), kas satur Java Kompilatoru JRE (Java Runtime Environment), kas satur Java Interpretatoru
WORA (Write Once Run Everywhere) JVM Windows Java Izejas Kods (.java) Kompilators Java baitkods (.class) JVM Linux JVM Mac OS
Saturs Kas ir Java? Pirmā Programma Darbs ar mainīgajiem Sazarojumi un cikli Masīvi Metodes Virknes Copyright 2011 Accenture 7
Minimāla Java Programma Fakti par Java 1. Lietotne sastāv no klasēm Java lietotnes sastāv no klasēm. Java izejkods nevar būt izpildāms ārpus klases 2. Java Izejkods ir reģisterjūtīgs Java kompilators atšķir lielos un mazos burtas kā dažādas definīcijas package lv.startit.sample; public class HelloWorld { public static void main(string[] args) { System.out.println("Hello World!"); 3. Main funkcija Jebkurai Java lietotnei jāsatur funkcija «main», jo tikai tā var uzsākt programmas izpildi
Pakotne Tradicionāli pakotnes nosaukumi Fakti tiek ņemti par Java no inversētām Interneta 1. Lietotne Mājas sastāv Vietnēm. no klasiem Java lietotnes sastāv no klasēm. Java izejkods nevar būt izpildāms ārpus klases 2. Java Izejkods ir reģisterjūtīgs Java kompilators atšķir lielos un mazos burtus kā dažādas definīcijas package lv.startit.sample; public class HelloWorld { Pakotnes ļauj izmantot vairākas klases ar vienu nosaukumu, kas bieži ir nepieciešams programmām ar tūkstošiem klašu public Pakotnestatic ir direktorijas void main(string[] atdalītas ar «.» args) { System.out.println("Hello (punkts) simbolu. World!"); Pakotne: lv.startit.sample ir Atbilst direktorijai: \lv\startit\sample 3. Main funkcija Jebkurai Java lietotnei jāsatur funkcija «main», jo tikai tā var uzsākt programmas izpildi
Klases Nosaukums Klase Katra Javas programma satur vismaz vienu klasi. Klase ir fundamentāls jēdziens. Java izejas kods nevar eksistēt ārpus klases. Katrai klasei jābūt nosaukumam. Nosaukumam jāsakas ar lielu burtu, Katrs vārds sākas arī ar lielu burtu. package lv.startit.sample; public class HelloWorld { Klases apraksts satur visas mainīgo deklarācija un visas public static void main(string[] args) { metodes, kas reāli izpilda System.out.println("Hello World!"); Klases nosaukumam funkcionalitāti. Klases ķermenis jāsakrīt ar datnes nosaukumu. Izejas koda datnei jābeidzas ar ir iekļauts figūriekavās. «.java» Klases vārdam jāsakrīt ar faila Klass: HelloWorld vārdu. Datne: \lv\startit\sample\helloworld.java
Bloka robežas Figūriekavas Figūriekavas tiek lietotās koda apgabalu apzīmēšanai. Atverošā var apzīmēt bloka, klases, metodes sākumu Aizverošā iekava apzīmē bloka beigas un aizver tuvāko kreiso. package lv.startit.sample; public class HelloWorld { public static void main(string[] args) { System.out.println("Hello World!");
Lietotnes Ieejas Funkcija Ieejas Funkcija Vieta, kur sākas programmas izpilde Var veidot klases bez ieejas funkcijas. Vienai klasei ir maksimums viens ieejas punkts. Lietotnes Ieejas Funkcijai jābūt kā aprakstīts lejā un tikai tādai! Kas ir: public static void main (String [] args) Citādāk Java interpretātors nevarēs interpretēt funkciju kā Lietotnes Ieejas Funkciju package lv.startit.sample; public class HelloWorld { public static void main(string[] args) { System.out.println("Hello World!"); - public: nozīmē, ka funkcija ir redzama visās lietotnes merogā. - static: funkcija interpretēta uz klases līmenī - void: nozīmē, ka funkcija nedod atpakaļ nekādas vērtības (citiem vārdiem tā ir procedūra no Pascal valodas) - main: funkcijas nosaukums. (jāsakas ar mazo būrtu). - String [] args: funkcijas paremetri, kas varētu būt kā ievads no lietotājā
Java Izteiksme Izteksme Izteiksmes var būt literāļi vai konstantes - hello - a - 12345 Izteiksme var būt kāda operātora rezultāts - X / Y * Z vai metodes izsaukuma rezultāts - System.out.println("Teksts"); - getfactorial(3) package lv.startit.sample; public class HelloWorld { public static void main(string[] args) { System.out.println("Hello World!"); Drukā tekstu uz lietotnes konsoles
Startējam Programmu package lv.startit.sample; public class HelloWorld { public static void main(string[] args) { System.out.println("Hello World!");
Saturs Kas ir Java? Pirmā Programma Darbs ar mainīgajiem Sazarojumi un cikli Masīvi Metodes Virknes Copyright 2011 Accenture 15
Mainīgie Vieta atmiņā, kurā var saglabāt vērtību un vēlāk to izmantot un/vai mainīt
Darbs ar mainīgajiem package lv.startit.sample; public class HelloNumbers { Mainīgā deklarācija public static void main(string[] args) { int mynumber = 10; System.out.println("Hello " + mynumber); System.out.println("Hello again " + mynumber); Programmas rezultāts
Darbs ar mainīgajiem package lv.startit.sample; public class HelloNumbers { Programmas rezultāts public static void main(string[] Inkrementā args) { operācija int mynumber = 10; System.out.println("Hello " + mynumber); mynumber++; mynumber = mynumber + 1; System.out.println("Hello again " + mynumber); Var arī definēt inkrementu īsā formā
Mainīgā deklarācija //tips nosaukums = sākumvērtība; //piemērs int mynumber = 10; Mainīgā deklarācijā ir jānorāda gan tips, gan nosaukums Labākā Prakse: Mainīgajam uzreiz jānorāda sākumvērtība. To var mainīt vēlāk.
Primitīvo Datu Tipi Tips Bits Mazākā Vērtība Lielākā Vērtība boolean (n/a) false true char 16 '\u0000' [0] '\uffff' [2 16-1] byte 8-128 [-2 7 ] +127 [2 7-1] short 16-32,768 [-2 15 ] +32,767 [2 15-1] int 32-2,147,483,648 [-2 31 ] +2,147,483,647 [2 31-1] long 64-9,223,372,036,854,775,808 [- 2 63 ] +9,223,372,036,854,775,807 [2 63-1] float 32 ±1.40129846432481707e-45 ±3.40282346638528860e+38 double 64 ±4.94065645841246544e-324 ±1.79769313486231570e+308
Norāžu Datu Tipi Tips Paskaidrojums Piemērs java.lang.string Virknes String s = "hello"; java.util.date Laiks un datums Date now = new Date(); java.util.arraylist Dinamiskais saraksts (objektu kolekcija) ArrayList list = new ArrayList(); list.add( 5 ); list.add("hello");
Piemērs public static void main(string[] args) { int aninteger = 10; System.out.println("I am an integer: " + aninteger); long along = 1000; System.out.println("I am an integer: " + along); double adouble = 5.5; System.out.println("I am a double: " + adouble); char achar = 'C'; System.out.println("I am a char: " + achar); String astring = "Hello"; System.out.println("I am a String: " + astring); Date adate = new Date(); System.out.println("Current time is: " + adate);
Java Operatori. Darbības ar skaitļiem double g = 5.0; int i = (int) (g / 2); A + B A - B Izteiksme Paskaidrojums Piemērs Saskaitīšana Atņemšana int a = 10; int b = a + 5; // atbilde 15 int c = 10; int d = c - 8; // atbilde 2 int e = 5; int f = e / 2; // atbilde 2 A / B Dalīšana double g = 5.0; double h = g / 2; // atbilde 2.5 Jautājums ar A * B Reizināšana int k = 5 * 2; zvaigznīti: int k = 6 % 3; // atbile 0 A % B Atlikums Ar ko ir vienāds i? int l = 8 % 3; // atbile 2
Java Operatori Salīdzinājumi A < B A > B A <= B A >= B A == B A!= B Izteiksme Paskaidrojums Piemērs A mazāks par B A lielāks par B A mazāks vai vienāds ar B A lielāks vai vienāds ar B A ir vienāds A nav vienāds if (a < 10) { // ja a mazāks par 10, tad... if (a > 10) { // ja a lielāks par 10, tad... if (a <= 10) { //ja a mazāks/vienāds par 10, tad.. if (a >= 10) { //ja a lielāks/vienāds par 10, tad.. if (a == 10) { // ja a ir vienāds ar 10, tad... if (a!= 10) { // ja a nav vienāds ar 10, tad...
Java Operatori Loģiskie Operatori A && B A B Izteiksme Paskaidrojums Piemērs UN (AND) VAI (OR)!A NĒ (NOT) if (a > 5 && a < 10) { // šeit ir java kods if (a < 3 a > 10) { // šeit ir java kods if (!(a < 10)) { //ja a ir lielāks/vienāds ar 10 tad...
Saturs Kas ir Java? Pirmā Programma Darbs ar mainīgajiem Sazarojumi un cikli Masīvi Metodes Virknes Copyright 2011 Accenture 26
Programas izpildes kontrole Lineārā izpilde. Šādi notiek izpilde pēc noklusējuma un Sazarojums Izpilde pāries uz vienu vai otru operatoru atkarībā no nosacījuma
Sazarojumi (IF) if operators ļauj izpildīt kodu, ja nosacījums ir patiess Piemērs int i = 10; if (i > 10) { System.out.println("i ir lielāks par 10!");
Sazarojumi (IF-ELSE) if-else operators izpilda vienu vai otru darbību atkarībā no nosacījuma Piemērs int i = 10; if (i > 10) { System.out.println("i ir lielāks par 10!"); else { System.out.println("i nav lielāks par 10!");
Sazarojumi (IF-ELSE-IF) Paplašinātā versija no IF-ELSE sazarojuma Piemērs int i = 10; if (i > 10) { System.out.println("i ir lielāk par 10!"); else if (i < 0) { System.out.println("i ir negatīvais"); else { System.out.println("i ir starp 0 un 10!");
Cikli Atkārto darbības atkarībā no nosacījuma vērtības To var panākt ar vienu no sekojošiem cikliem: for while do - while
Cikls - WHILE while cikls var veikt izpildīšanu vairākās reizēs, kamēr nosacījums ir patiess Iterācijas Piemērs int i = 0; while (i < 5) { System.out.println("Cik tālu ir bezgalība?" + i); i++;
Cikls - WHILE Bezgalīgais cikls while (true) { System.out.println("Cik daudz ir bezaglība?");
Cikls - WHILE Gadījuma skaitļi int i = 0; java.util.random random = new java.util.random(); while (i < 5) { i = random.nextint(6); System.out.println(i);
Cikls - DO-WHILE do-while cikls izpildīsies, kamēr nosacījums ir patiess, bet nodrošina vismaz vienu izpildīšanas reizi int i; java.util.random random = new java.util.random(); do { i = random.nextint(6); System.out.println(i); while (i < 5)
Cikls - FOR Syntax for (init; condition; exp ) {... Piemērs for (int i = 0; i < 5; i++) { System.out.println(i); Rezultāts init condition exp
Cikls - FOR Rezultāts Cikls FOR ar apgriezto skaitīšanu for (int i = 5; i > 0; i--) { System.out.println(i);
Cikls - FOR Vēl viens piemērs for (int i = 2; i <= 1024; i = i * 2) { System.out.println(i); Rezultāts
Ciklu Pārtraukšana Ciklu var pārtraukt ar atslēgvārdu «break» Rezultāts Piemērs for (int i = 0; i < 10 ; i++) { if (i == 5) { break; System.out.println(i);
Iterāciju pārtraukšana Cikla iterāciju var pārtraukt ar atslēgvārdu «continue» Piemērs for (int i = 0; i < 10 ; i++) { if ((i % 2) == 0) { continue; System.out.println(i); Rezultāts
Sazarojums - SWITCH «SWITCH» ir sazarojums ar vairākiem nosacījumiem «IF-ELSE-IF» konstrukcija ir alternatīva «SWITCH» operatoram Syntax switch (exp) { case val1: // ja exp ir vienāds ar val1 break; case val2: // ja exp ir vienāds ar val2 break; default: // pēc noklusējumā
Sazarojums - SWITCH Piemērs int month = 8; String monthstring; switch (month) { case 1: monthstring = "January"; break; case 2: monthstring = "February"; break; case 3: monthstring = "March"; break; case 4: monthstring = "April"; break; case 5: monthstring = "May"; break; case 6: monthstring = "June"; break; case 7: monthstring = "July"; break; case 8: monthstring = "August"; break; case 9: monthstring = "September"; break; case 11: monthstring = "November"; break; case 12: monthstring = "December"; break; default: monthstring = "Invalid month"; break; System.out.println(monthString); Rezultāts
Saturs Kas ir Java? Pirmā Programma Darbs ar mainīgajiem Sazarojumi un cikli Masīvi Copyright 2011 Accenture 43
Masīvi Fiksētais garums Vienāds tips visiem elementiem Piekļuve pēc indeksa Syntax <data_type> [] <variable_name>; Piemērs int [] myintegerarray; String [] mystringarray ;
Masīvi Masīva elementu var izsaukt caur tā indeksu Masīva pirmā elementa indekss ir 0 Piemērs String[] anotherstringarray = { "Hello", "There", "How", "Are", "You" ; System.out.println("The first string is " + anotherstringarray[0]);
Masīvi (Piemērs) Piemērs int[] anarray = new int[10]; anarray[0] = 100; anarray[1] = 200; anarray[2] = 300; anarray[3] = 400; anarray[4] = 500; anarray[5] = 600; anarray[6] = 700; anarray[7] = 800; anarray[8] = 900; anarray[9] = 1000; Rezultāts System.out.println("Element at index 0: " + anarray[0]); System.out.println("Element at index 1: " + anarray[1]); System.out.println("Element at index 2: " + anarray[2]); System.out.println("Element at index 3: " + anarray[3]); System.out.println("Element at index 4: " + anarray[4]); System.out.println("Element at index 5: " + anarray[5]); System.out.println("Element at index 6: " + anarray[6]); System.out.println("Element at index 7: " + anarray[7]); System.out.println("Element at index 8: " + anarray[8]); System.out.println("Element at index 9: " + anarray[9]);
Masīvi (Piemērs) Optimizējam Piemēru int[] anarray = new int[10]; anarray[0] = 100; anarray[1] = 200; anarray[2] = 300; anarray[3] = 400; anarray[4] = 500; anarray[5] = 600; anarray[6] = 700; anarray[7] = 800; anarray[8] = 900; anarray[9] = 1000; Tā ir kanoniskā masīva deklarācijas forma. Bet arī ir īsākā. System.out.println("Element at index 0: " + anarray[0]); System.out.println("Element at index 1: " + anarray[1]); System.out.println("Element at index 2: " + anarray[2]); System.out.println("Element at index 3: " + anarray[3]); System.out.println("Element at index 4: " + anarray[4]); System.out.println("Element at index 5: " + anarray[5]); System.out.println("Element at index 6: " + anarray[6]); System.out.println("Element at index 7: " + anarray[7]); System.out.println("Element at index 8: " + anarray[8]); System.out.println("Element at index 9: " + anarray[9]);
Masīvi (Piemērs) Optimizējam Piemēru Īsākā masīva deklarācijas forma int [] anarray = {100, 200, 300, 400, 500, 600, 700, 800, 900, 1000; System.out.println("Element at index 0: " + anarray[0]); System.out.println("Element at index 1: " + anarray[1]); System.out.println("Element at index 2: " + anarray[2]); System.out.println("Element at index 3: " + anarray[3]); System.out.println("Element at index 4: " + anarray[4]); System.out.println("Element at index 5: " + anarray[5]); System.out.println("Element at index 6: " + anarray[6]); System.out.println("Element at index 7: " + anarray[7]); System.out.println("Element at index 8: " + anarray[8]); System.out.println("Element at index 9: " + anarray[9]); Šo var optimizēt ar ciklu
Masīvi (Piemērs) Iterācija pa masīviem int [] anarray = {100, 200, 300, 400, 500, 600, 700, 800, 900, 1000; for (int i = 0; i < anarray.length; i++) { System.out.println("Element is: " + anarray[i]); Kanoniskā masīvu iterācijas forma Masīviem un dinamiskiem Speciāla forma iterācijai sarakstiem ir arī speciāla FOR forma int [] anarray = {100, 200, 300, 400, 500, 600, 700, 800, 900, 1000; for (int i : anarray) { System.out.println("Element is: " + i);
Masīviem un dinamiskiem Speciāla forma iterācijai sarakstiem ir arī speciāla FOR forma int [] anarray = {100, 200, 300, 400, 500, 600, 700, 800, 900, 1000; for (int i : anarray) { System.out.println("Element is: " + i);