180 likes | 446 Views
Java programavimo pagrindai Mano pirmoji http://java.sun.com ◊ Jūsų pirmoji Java program a ◊ Parametrų perdavimas komandine eilute ◊ Paprasto teksto spausdinimas Java programos analizė ◊ Struktūros apžvalga ◊ Kintamieji ◊ Metodai ◊ Klasės ◊ Paketai
E N D
Java programavimo pagrindai • Mano pirmojihttp://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 OurPrimaryClass { public final static voidmain(String S[]) { System.out.println("Sveika, Java!"); Date d=new Date(); System.out.println("Data: "+d.toString()); } } 2. javac OurPrimaryClass.java 3. java OurPrimaryClass Parametrųperdavimas public class PrintCommandLineParameters { public final static void main(String S[] ) { System.out.println("Sveika, Java!"); System.out.println("Komandine eilute"+ +"buvo perduotitokie 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[]) { int myPrimitive; //pirminio tipo kintamasis int myReference[]; //nuorodos tipo kintamasis myPrimitive=1; //primityviam galime iš karto kažką priskirti myReference=new int[3]; //o nuorodai pirma reikia išskirti atminties, // kad vėliau ką nors priskirti myReference[0]=0; myReference[1]=1; myReference[2]=2; } }
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 1000000000, -1000000000 float 4 baitai priklauso nuo tikslumo 3.142 double 8 baitai priklauso nuo tikslumo 3.141592654 boolean 1 bitas true, false true, false char 2 baitai visi unicode simboliai Java kalbos pirminiai tipai.
Programuotojo apibrėžiami tipai class MyType { public int myDataMember=4; public void myMethodMember() { System.out.println("As esu svarbus narys!"); System.out.println("myData="+myDataMember);} } Objekto inicijacija (instantination). public class RunMe { public static void main(String ARGV[]) { MyType Mine=new MyType(); int i=Mine.myDataMember; Mine.myMethodMember(); } }
Atminties išskyrimas masyvams. int myIntArray[]; myIntArray=new int[3]; myType myObjectArray[]; myObjectArray=new myType[3]; Reikšmių priskyrimas masyvo elementams myIntArray[0]=0; myIntArray[1]=1; myIntArray[2]=2; myObjectArray[0]=new myType(); myObjectArray[1]=new myType(); myObjectArray[2]=new myType(); myObjectArray[0].myDataMember=0; myObjectArray[1].myDataMember=1; myObjectArray[2].myDataMember=2;
Metodo apibrėžimo sintaksė <metodo_modifikatorius> grįžties_tipas metodo_vardas (<parameterai>) { metodo kamienas } Metodų iškvietimas public class MethodExamples{ static void voidMethod() { System.out.println("As nieko nedarantis metodas :("); } static int returnInt() { 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"); voidMethod(); int ans=returnInt(); System.out.print("Metodas sako -"); System.out.println(ans); } }
Pirminių kintamųjų panaudojimas parametrais. class ParameterExample { static int addFour(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=addFour(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 ReferenceParameterExample { static void changeArray(int referencellariable[]) { referencellariable[2]=100;} public static void main(String ARGV[]){ int anArray[]=new int[3]; anArray[2]=10; System.out.println("anArray[2]="+anArray[2]); changeArray(anArray); System.out.println("anArray[2]="+anArray[2]); } } Rezultatas: anArray[2]=10 anArray[2]=100
Metodų perkrova Dviejų skaičių palyginimas. public static String compareNums(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 compareNums(int i, int j, int k){ String S=compareNums(i,j); S=S+"\n", S=S+compareNums(i,k); return S;} Metodo perkrova su skirtingų tipų parametrais. public static String compareNums(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ė Dinaminis Nerašomas (nutylimas dinaminis) <objektas>.<metodo_vardas>(<parametrų sąrašas>) Statinis static <clasės_vardas>.<metodo_vardas>(<parametrų_sąrašas>) Statinių ir dinaminių metodų palyginimas public class StaticVsDynamic { int i=0; public static void staticMethod(int j) { System.out.println("Statinis metodas"); System.out.println("j="+j); } //dinaminis metodas public void setInt(int k) { i=k; System.out.println("Priskiriame i reiksme "+k); } public int returnInt() { return i;} }
Klasės narių panaudojimas Modifikatorius Aprašymas Private Pasiekiamas tik klasės viduje. (Nutyli-mas) 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 SaleProcessor { private int Revenue=0; private int numSales=0; public void recordSale(int newRevenue){ Revenue=Revenue+newRevenue; numSales=numSales+1;} public int getRevenue() { return Revenue;} public int getNumSales() { return numSales;} }
Paveldimumas class CashRegister extends SaleProcessor{ private int Ones=0; private int Fives=0; private int Tens=0; CashRegister(int startOnes, int startFives, int startTens) { Ones=startOnes; Fives=startFives; Tens=startTens;} public void sellToCustomer(int newOnes, int newFives, int newTens) { int thisSum=0; Ones=Ones+newOnes; thisSum=newOnes; Fives=Fives+newFives; thisSum=thisSum+(newFives*5); Tens=Tens+newTens; thisSum=thisSum+(newTens*10); recordSale(thisSum); } public int numOnes() {return Ones;} public int numFives() {return Fives;} public int numTens() {return Tens;} }
Kompiliavimas ir vykdymas • javac sukompiliuoja į *.class baitinį kodą • *.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 * thisWontWork() { • char localArray[8]; • strcpy(localArray,"Sveikas"); • return localArray;} • Java gera programa: • public char[] thisWillWork(){ • char localArray[8]; • localArray=('S','v','e','i','k','a','s'); • return localArray;}
Mano pirmasis įskiepis 1. Sukuriame failąFirstApplet .java: import java.applet.*; import java.awt.*; public class FirstApplet extends Applet { public void paint(Graphics g) { g.drawString("Sveikas, iskiepi!",50,50);} } Interneto puslapis skirtas patalpinti įskiepiui. 2. Sukuriame failą mano.html: <APPLET CODE=FirstApplet.class WIDTH=200 HEIGHT=200> Jūsų naršyklė nepalaiko Java įskiepių. </APPLET> 3. Suappletviewer iškviečiame mano.html : appletviewermano.html
Skirtumai tarp Java programos ir įskiepio • Nei vienas įskiepio metodas nėra statinis. • Mūsų klasė praplečia (extends) klasę vardu Applet. Ši klasė yra java.applet pakete. • Panašiai kaip ir "main" metodo atveju, praginos terpė paleidžia vykdyti init, paintir kitus įskiepio metodus. Įskiepis reaguojantis į pelę. import java.applet.*; import java.awt.*; public class SecondApplet extends Applet { int curX=50; int curY=50; public boolean mouseDown(Event e, int x, int y) { curX=x; curY=y; repaint(); return true;} public void paint(Graphics g) { g.drawString("Hello, Applet!",curX,curY);} }
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 Applet žymės savybės
Automatinė dokumentacija • Sukuriame Java failą documentedClass.java • /** As parasiau klasę ir ją dokumantavau! • * Dokumentaciją gavau naudodamas javadoc komandą. • */ • class documentedClass { • /** Dabar aprasysiu shy kintamaji • * Tai yra svekas skaicius int! • * Man patinka dokumentuoti! • */ • public int documentedVariable; • /** 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 documentedMethod(String x) ({ • System.out.println("Dokumentuotas metodas");} • } 2. Atliekame automatinę dokumentaciją: javadoc -d <API katalogas> documentedClass.java