Java programavimo pagrindai Mano pirmoji http java sun

  • Slides: 18
Download presentation
Java programavimo pagrindai • Mano pirmoji http: //java. sun. com • ◊Jūsų pirmoji Java

Java programavimo pagrindai • Mano pirmoji http: //java. sun. com • ◊Jūsų pirmoji Java programa ◊Parametrų perdavimas komandine eilute ◊Paprasto teksto spausdinimas • Java programos analizė ◊Struktūros apžvalga ◊Kintamieji ◊Metodai ◊Klasės ◊Paketai • Java praginos aplinka ◊Kompiliavimas ir vykdymas ◊Betarpinis (JIT) kompiliavimas ◊"Šiukšlių surinkimas" ("Garbage Collection") • Java įskiepių kūrimas ◊Jūsų pirmasis įskiepis ◊Įskiepio anatomija • Įskiepių talpinimas Internete • Automatinis programos dokumentavimas • Testas

Mano pirmoji java programa 1. import java. util. *; public class Our. Primary. Class

Mano pirmoji java programa 1. import java. util. *; public class Our. Primary. Class { public final static void main(String S[]) { System. out. println("Sveika, Java!"); Date d=new Date(); System. out. println("Data: "+d. to. String()); } } 2. javac Our. Primary. Class. java 3. java Our. Primary. Class Parametrų perdavimas public class Print. Command. Line. Parameters { public final static void main(String S[] ) { System. out. println("Sveika, Java!"); System. out. println("Komandine eilute"+ +"buvo perduoti tokie parametrai: "); for (int i=0; i<S. length; i++) System. out. println(S[i]); }

Pirminiai ir nuorodų kintamieji. public class Variables { public static void main(String ARGV[]) {

Pirminiai ir nuorodų kintamieji. public class Variables { public static void main(String ARGV[]) { int my. Primitive; //pirminio tipo kintamasis int my. Reference[]; //nuorodos tipo kintamasis my. Primitive=1; //primityviam galime iš karto kažką priskirti my. Reference=new int[3]; //o nuorodai pirma reikia išskirti atminties, // kad vėliau ką nors priskirti my. Reference[0]=0; my. Reference[1]=1; my. Reference[2]=2; } }

Java kalbos pirminiai tipai. Tipas Dydis Kitimo ribos Reikšmių pavyzdžiai int 4 baitai nuo

Java kalbos pirminiai tipai. Tipas Dydis Kitimo ribos Reikšmių pavyzdžiai int 4 baitai nuo -2147483648 iki 2147483648 2003, -2003 short 2 baitai nuo -32768 iki 32767 1999, -1999 byte 1 baitas nuo -128 iki 127 100, -100 long 8 baitai 922372036854775808 922372036854775807 100000, 100000 float 4 baitai priklauso nuo tikslumo 3. 142 doubl e 8 baitai priklauso nuo tikslumo 3. 141592654 boole an 1 bitas true, false char 2 baitai visi unicode simboliai

Programuotojo apibrėžiami tipai class My. Type { public int my. Data. Member=4; public void

Programuotojo apibrėžiami tipai class My. Type { public int my. Data. Member=4; public void my. Method. Member() { System. out. println("As esu svarbus narys!"); System. out. println("my. Data="+my. Data. Member); } } Objekto inicija (instantination). public class Run. Me { public static void main(String ARGV[]) { My. Type Mine = new My. Type(); int i=Mine. my. Data. Member; Mine. my. Method. Member(); } }

Atminties išskyrimas masyvams. int my. Int. Array[]; my. Int. Array=new int[3]; my. Type my.

Atminties išskyrimas masyvams. int my. Int. Array[]; my. Int. Array=new int[3]; my. Type my. Object. Array[]; my. Object. Array=new my. Type[3]; Reikšmių priskyrimas masyvo elementams my. Int. Array[0]=0; my. Int. Array[1]=1; my. Int. Array[2]=2; my. Object. Array[0]=new my. Type(); my. Object. Array[1]=new my. Type(); my. Object. Array[2]=new my. Type(); my. Object. Array[0]. my. Data. Member=0; my. Object. Array[1]. my. Data. Member=1; my. Object. Array[2]. my. Data. Member=2;

Metodo apibrėžimo sintaksė <metodo_modifikatorius> grįžties_tipas metodo_vardas (<parameterai>) { metodo kamienas } Metodų iškvietimas public

Metodo apibrėžimo sintaksė <metodo_modifikatorius> grįžties_tipas metodo_vardas (<parameterai>) { metodo kamienas } Metodų iškvietimas public class Method. Examples{ static void. Method() { System. out. println("As nieko nedarantis metodas : ("); } static int return. Int() { int i=4; System. out. println("returning 4"); return i; } static public final void main(String S[]) { System. out. println("Sveiki, metodai!"); System. out. println("Kvieciu void tipo metoda"); void. Method(); int ans=return. Int(); System. out. print("Metodas sako -"); System. out. println(ans); } }

Pirminių kintamųjų panaudojimas parametrais. class Parameter. Example { static int add. Four(int i) {

Pirminių kintamųjų panaudojimas parametrais. class Parameter. Example { static int add. Four(int i) { i=i+4; System. out. println("Vietine kopija: i="+i); return i; } public final static void main(String S[]) { System. out. println("Sveikas, parametru siuntejau!"); int i=10; System. out. print("Pradinė reiksme: i="+i); int j=add. Four(i); System. out. println("Tarpine reiksme: j="+j); System. out. println("Einamoji reiksme: i="+i); } } Rezultatas: Sveikas, parametru siuntejau! Pradinė reiksme: i=10 Tarpine reiksme: j=14 Einamoji reiksme: i=10

Nuorodų panaudojimas parametrais. public class Reference. Parameter. Example { static void change. Array(int referencellariable[])

Nuorodų panaudojimas parametrais. public class Reference. Parameter. Example { static void change. Array(int referencellariable[]) { referencellariable[2]=100; } public static void main(String ARGV[]){ int an. Array[]=new int[3]; an. Array[2]=10; System. out. println("an. Array[2]="+an. Array[2]); change. Array(an. Array); System. out. println("an. Array[2]="+an. Array[2]); } } Rezultatas: an. Array[2]=100

Metodų perkrova Dviejų skaičių palyginimas. public static String compare. Nums(int i, int j) {

Metodų perkrova Dviejų skaičių palyginimas. public static String compare. Nums(int i, int j) { if (i==j) { return "Skaiciai "+i+" ir "+j+" sutampa"; } if (i>j) { return "Skaicius "+i+" didesnis uz "+j; } return "Skaicius "+j+" didesnis uz "+i; } Perkrova naudojant skirtingus parametrų sąrašus: public static String compare. Nums(int i, int j, int k){ String S=compare. Nums(i, j); S=S+"n", S=S+compare. Nums(i, k); return S; } Metodo perkrova su skirtingų tipų parametrais. public static String compare. Nums(double i, double j) { if (i==j) { return "Skaiciai "+i+" ir "+j+" sutampa"; } if (i>j) { return "Skaicius "+i+" didesnis uz "+j; } return "Skaicius "+j+" didesnis uz "+i; }

Metodo tipas Modifikatorius Sintaksė Dinami nis Nerašomas (nutylimas dinaminis) <objektas>. <meto do_vardas> (<parametrų sąrašas>)

Metodo tipas Modifikatorius Sintaksė Dinami nis Nerašomas (nutylimas dinaminis) <objektas>. <meto do_vardas> (<parametrų sąrašas>) static <clasės_vardas>. < metodo_vardas> (<parametrų_sąraš as>) Statinis Statinių ir dinaminių metodų palyginimas public class Static. Vs. Dynamic { int i=0; public static void static. Method(int j) { System. out. println("Statinis metodas"); System. out. println("j="+j); } //dinaminis metodas public void set. Int(int k) { i=k; System. out. println("Priskiriame i reiksme "+k); } public int return. Int() { return i; } }

Klasės narių panaudojimas Modifika torius Aprašymas Private Pasiekiamas tik klasės viduje. (Nutylimas) Pasiekiamas paketo

Klasės narių panaudojimas Modifika torius Aprašymas Private Pasiekiamas tik klasės viduje. (Nutylimas) Pasiekiamas paketo klasėms, kurios nepraplečia šią klasę. Protected Narys pasiekiamas paketo klasėms. Public Narys pasiekiamas kitoms klasėms. Privatūs ir viešieji klasių nariai public class Sale. Processor { private int Revenue=0; private int num. Sales=0; public void record. Sale(int new. Revenue){ Revenue=Revenue+new. Revenue; num. Sales=num. Sales+1; } public int get. Revenue() { return Revenue; } public int get. Num. Sales() { return num. Sales; } }

Paveldimumas class Cash. Register extends Sale. Processor{ private int Ones=0; private int Fives=0; private

Paveldimumas class Cash. Register extends Sale. Processor{ private int Ones=0; private int Fives=0; private int Tens=0; Cash. Register(int start. Ones, int start. Fives, int start. Tens) { Ones=start. Ones; Fives=start. Fives; Tens=start. Tens; } public void sell. To. Customer(int new. Ones, int new. Fives, int new. Tens) { int this. Sum=0; Ones=Ones+new. Ones; this. Sum=new. Ones; Fives=Fives+new. Fives; this. Sum=this. Sum+(new. Fives*5); Tens=Tens+new. Tens; this. Sum=this. Sum+(new. Tens*10); record. Sale(this. Sum); } public int num. Ones() {return Ones; } public int num. Fives() {return Fives; } public int num. Tens() {return Tens; } }

Kompiliavimas ir vykdymas 1. javac sukompiliuoja į *. class baitinį kodą 2. *. class

Kompiliavimas ir vykdymas 1. javac sukompiliuoja į *. class baitinį kodą 2. *. class baitinį kodą transliuoja (interpretuoja) į mašininį Greičiai: 1 C, Paskalis 2. Java 3. Basic, Perl Betarpinis (JIT) kompiliavimas Šiukšlių surinkimas Garbage Collection C klaidinga programa: public char * this. Wont. Work() { char local. Array[8]; strcpy(local. Array, "Sveikas"); return local. Array; } Java gera programa: public char[] this. Will. Work(){ char local. Array[8]; local. Array=('S', 'v', 'e', 'i', 'k', 'a', 's'); return local. Array; }

Mano pirmasis įskiepis 1. Sukuriame failą First. Applet. java : import java. applet. *;

Mano pirmasis įskiepis 1. Sukuriame failą First. Applet. java : import java. applet. *; import java. awt. *; public class First. Applet extends Applet { public void paint(Graphics g) { g. draw. String("Sveikas, iskiepi!", 50); } } Interneto puslapis skirtas patalpinti įskiepiui. 2. Sukuriame failą mano. html : <APPLET CODE=First. Applet. class WIDTH=200 HEIGHT=200> Jūsų naršyklė nepalaiko Java įskiepių. </APPLET> 3. Su appletviewer iškviečiame mano. html : appletviewer mano. html

Skirtumai tarp Java programos ir įskiepio 1. Nei vienas įskiepio metodas nėra statinis. 2.

Skirtumai tarp Java programos ir įskiepio 1. Nei vienas įskiepio metodas nėra statinis. 2. Mūsų klasė praplečia (extends) klasę vardu Applet. Ši klasė yra java. applet pakete. 3. Panašiai kaip ir "main" metodo atveju, praginos terpė paleidžia vykdyti init, paint ir kitus įskiepio metodus. Įskiepis reaguojantis į pelę. import java. applet. *; import java. awt. *; public class Second. Applet extends Applet { int cur. X=50; int cur. Y=50; public boolean mouse. Down(Event e, int x, int y) { cur. X=x; cur. Y=y; repaint(); return true; } public void paint(Graphics g) { g. draw. String("Hello, Applet!", cur. X, cur. Y); } }

Applet žymės savybės Savybė Prasmė Ar būtina? CODE Sukompiluotas įskiepis turi būti. class tipo

Applet žymės savybės Savybė Prasmė Ar būtina? CODE Sukompiluotas įskiepis turi būti. class tipo failas Taip WIDTH Įskiepio storis Interneto puslapyje Taip HEIGHT Įskiepio aukštis Interneto puslapyje Taip CODEBASE Katalogas kuriame patalpintas. class failas Ne ALT Alternatyvus tekstas Ne NAME Įskiepio vardas, kurį gali naudoti kiti puslapio įskiepiai. Ne ALIGN Įskiepio patalpinimo būdas. Ne VSPACE Taškelių skaičių, kuris gaubs įskiepį iš viršaus ir apačios. Ne HSPACE Taškelių skaičių, kuris gaubs įskiepį iš kairės ir dešinės. Ne

Automatinė dokumentacija 1. Sukuriame Java failą documented. Class. java /** As parasiau klasę ir

Automatinė dokumentacija 1. Sukuriame Java failą documented. Class. java /** As parasiau klasę ir ją dokumantavau! * Dokumentaciją gavau naudodamas javadoc komandą. */ class documented. Class { /** Dabar aprasysiu shy kintamaji * Tai yra svekas skaicius int! * Man patinka dokumentuoti! */ public int documented. Variable; /** Dabar dokumentuosime metoda! * Shis metodas naudoja viena String tipo parametra. * Jis nieko nedaro, ji panaudojau tik dokumentavimo iliustracijai. * Jei jis butu kam nors naudojamas, ash jums butinai ji aprasychiau!*/ public void documented. Method(String x) ({ System. out. println("Dokumentuotas metodas"); } } 2. Atliekame automatinę dokumentaciją: javadoc -d <API katalogas> documented. Class. java