Java programoz - PowerPoint PPT Presentation

1 / 34
About This Presentation
Title:

Java programoz

Description:

Java programoz si nyelv A nyelv alapjai Nyugat-Magyarorsz gi Egyetem Faipari M rn ki Kar Informatikai Int zet So s S ndor 2005. szeptember – PowerPoint PPT presentation

Number of Views:52
Avg rating:3.0/5.0
Slides: 35
Provided by: nym48
Category:

less

Transcript and Presenter's Notes

Title: Java programoz


1
Java programozási nyelvA nyelv alapjai
  • Nyugat-Magyarországi Egyetem
  • Faipari Mérnöki Kar
  • Informatikai Intézet
  • Soós Sándor
  • 2005. szeptember

2
Java információ források
  • ttp//java.lap.hu/
  • ttp//java.sun.com/
  • ttp//java.sun.com/j2se/1.5.0/docs/api
  • Java 2 Platform, Standard Edition, v1.5.0 API
    Specification
  • angol nyelvu referencia a Java osztályairól
    (online)
  • ttp//java.sun.com/j2se/1.5.0/download.jsp
  • Download Java 2 Platform Standard Edition 5.0
  • ttp//java.sun.com/docs/books/tutorial/index.html
  • angol nyelvu Java oktató (on-line)
  • ttp//java.sun.com/docs/books/tutorial/download/tu
    torial.zip
  • angol nyelvu Java tutorial (letöltheto)

3
A Java rendszer telepítése
  • Mire van szükség a Java-ban történo
    programozáshoz?
  • Java 2 Platform, Standard Edition
  • Ingyenesen letöltheto a ttp//java.sun.com/j2se/1.
    5.0/download.jsp címrol.
  • Az JDK-t kell letölteni, nem a JRE (runtime)
    változatot!
  • Tetszoleges editor (szövegszerkeszto), ami képes
    formázás nélküli tiszta szövegfile-okat kezelni.
  • Alternatív lehetoség integrált fejleszto
    környezetek
  • NetBeans, letöltheto a fenti címrol
  • Eclipse, letöltheto a ww.eclipse.org címrol.
  • FreeJava, letöltheto a ttp//belovai.uw.hu/
    címrol.
  • CLASSPATH környezeti változó beállítása
  • Az itt felsorolt könyvtárakban keresi a fordító
    az osztályokat.
  • Érdemes beletenni az aktuális könyvtárat (.)

4
A Java jellemzoi
  • Hordozható, platformfüggetlen
  • forráskód és bájtkód szinten
  • Tisztán objektumorientált
  • csak osztályok, illetve objektumok léteznek
  • Szabványos osztálykönyvtár
  • Szintaktikája a C -on alapszik.

5
A Java család
  • JavaScript
  • HTML-be ágyazott forrásszöveg
  • korlátozott eszközkészlet
  • ezzel nem foglalkozunk ebben a tárgyban
  • Java Applet
  • Böngészoben futó bináris program, felhasználhatja
    a böngészo program által nyújtott
    szolgáltatásokat
  • HTML file-ból indított bájtkód
  • Java Alkalmazás
  • önállóan fut a Java Virtuális Gép alatt

6
A Java programozási modellJava alkalmazás
Forrásszöveg .java file
javac.exe fordító (compiler)
Bájtkód, bytecode .class file
Java Virtuális Gép Java Virtual Machine
(JVM) Windows, Linux, Unix, mobiltelefon,
stb. bármilyen eszköz, amire létezik Java
Virtuális Gép
7
A Java programozási modellJava kisalkalmazás
(Applet)
Forrásszöveg .java file
javac.exe fordító (compiler)
Bájtkód, bytecode .class file
Java kompatibilis böngészo program bármilyen
eszköz, amire létezik megfelelo böngészo
8
A Java programozási modellJavaScript
Forrásszöveg .html fileba ágyazva
JavaScript kompatibilis böngészo
program bármilyen eszköz, amire létezik megfelelo
böngészo
9
Az elso alkalmazás
  • Forrásszöveg (HelloVilag.java)
  • public class HelloVilag
  • public static void main(String args)
  • System.out.println("Hello Világ")
  • Fordítás
  • javac HelloVilag.java
  • Futtatás
  • java HelloVilag

10
Az elso kisalkalmazás, applet
  • Forrásszöveg (HelloVilagApplet.java)
  • import java.awt.
  • import java.applet.Applet
  • public class HelloVilagApplet extends Applet
  • public void paint(Graphics g)
  • g.drawRect(25, 2, 90, 25)
  • g.drawString("Hello Világ", 50, 20)
  • Fordítás
  • javac HelloVilagApplet.java

11
Az elso kisalkalmazás HTML
  • Forrásszöveg (HelloVilagApplet.html)
  • ltHTMLgt
  • ltHEADgtltTITLEgtHello Világ Appletlt/TITLEgtlt/HEADgt
  • ltBODYgt
  • ltAPPLET CODEHelloVilagApplet.class WIDTH200
    HEIGHT50gt
  • Ha a böngészo nem támogatja a Java Appleteket,
    akkor ez a szöveg fog megjelenni!
  • lt/APPLETgt
  • lt/BODYgtlt/HTMLgt
  • Megtekintés
  • appletviewer HelloVilagApplet.html

12
Az elso grafikus alkalmazás
  • Forrásszöveg (HelloVilag2.java)
  • import javax.swing.JOptionPane
  • public class HelloVilag2
  • public static void main( String args )
  • JOptionPane.showMessageDialog(
  • null, "Hello Világ!" )
  • System.exit( 0 )

13
A 2. grafikus alkalmazás, adatbevitel
  • Forrásszöveg (Addition.java)
  • Nézzük meg az Addition.java fájlt!

14
A Java nyelv alapjai 1.
  • Megjegyzés (comment)
  • egysoros megjegyzés
  • // jeltol a sor végéig
  • hosszabb megjegyzés
  • /
  • ...
  • /
  • dokumentációs megjegyzés (a javadoc program
    használja)
  • /
  • ...
  • /

15
A Java nyelv alapjai 2.
  • Karakterkészlet
  • ASCII helyett Unicode karakterkészlet
  • 8 bit helyett 16 bit
  • minden Unicode karakter használható a teljes
    forrásszövegben, akár az azonosítókban is, ha a
    környezet támogatja
  • óvatosan használni!!!

16
A Java nyelv alapjai 3.
  • Azonosítók
  • Betuvel kezdodik betuvel vagy számmal
    folytatódik
  • Betunek számít a és az _ jel valamint az
    ékezetes magánhangzók is.
  • Case-sensitive, azaz különböznek a kis- és
    nagybetuk
  • Az azonosítók hossza nincs korlátozva
  • A nyelv kulcsszavai nem lehetnek azonosítók
  • Példák
  • egészszám, _változó, dollár, CiklusVáltozó, stb.

17
A Java nyelv alapjai 4.Egyszeru típusok
egyszeru típus osztály leírás boolean Boolean logi
kai típus (true, false) char Character 16 bites
Unicode karakter byte Integer 8 bites egész szám
(-128 - 127) short Integer 16 bit, (-32 768 -
32 767) int Integer 32 bit (-2 147 483 648 - 2
147 483 647) long Long 64 bit (-9 223 372 036 854
775 808 - ...) float Float 32 bit
(-3,40292347E38 - 3,40292347E38) double Double
64 bit (-1,79769313486231570E308 - ...)
  • a szabvány rögzíti az ábrázolási módot és a
    méretet, nem az implementáció
  • hagyományos típusként és osztályként is
    használhatók
  • osztályként a MIN_VALUE és a MAX_VALUE konstansok
    definiálják a határokat
  • a Float és Double esetén van egy
    POSITIVE_INFINITY, NEGATIVE_INFINITY és egy NaN
    (Not a Number) konstans is.

18
A Java nyelv alapjai 5.Literálok
  • Objektumok null. Bármely objektumreferenciának
    értékül adható
  • Logikai értékek true, false
  • Egész számok
  • 0 kezdetu számok oktális (8-as számrendszer), pl.
    0377
  • 0x kezdetu számok hexadecimális (16-os
    számrendszer), pl. 0xff
  • minden más szám decimális számrendszerben lesz
    értelmezve, pl. 255
  • egy egész szám után írt l vagy L betu long típust
    deklarál
  • Lebegopontos számok
  • decimális számként adhatók meg tizedesponttal és
    e vagy E exponenssel
  • ez önmagában double típust jelent, f vagy F
    végzodéssel lehet float típust deklarálni, pl.
    3.14, -123.45, 12.3e4
  • Karakterek aposztrófok között kell megadni, pl.
    'a', 'Z'
  • escape szekvenciák, mint a C nyelvben, lásd a
    következo oldalon!
  • Szövegek (String) idézojelek között kell
    megadni, pl. Helló Világ

19
Escape szekvenciák
  • Kód Leírás
  • \n újsor
  • \t tabulátor
  • \b egy karakter vissza, törlés
  • \r kocsi vissza, soremelés nélkül
  • \f lapdobás
  • \\ \ karakter
  • \' ' karakter, aposztróf
  • \ karakter, idézojel
  • \ooo karakter oktális számrendszerben 0-377
  • \uhhhh Unicode karakter hexadecimálisan (0-0xffff)

20
Változódeklaráció, kezdoértékadás
  • Mint a C/C nyelvben, pl. int x, y
  • Kezdoérték adható az operátorral, pl. int x1
  • A lokális változók nem kapnak automatikusan
    kezdoértéket!
  • Az osztályok adatmezoi a következo kezdoértéket
    kapják
  • Típus Kezdoérték
  • boolean false
  • char '\u0000'
  • byte, short, int, long 0
  • float, double 0.0
  • objektum null

21
Tömbök
  • A C/C nyelvvel ellentétben ez igazi típus, nem
    pointer
  • A tömbök indexelése 0-val kezdodik
  • Tömb deklarációja a jellel történik a típus
    vagy a változó neve után
  • int EgeszTomb, tomb // mindketto tömb
  • int egeszszam, tomb // skalár és tömb
  • ez egy tetszoleges méretu tömböt deklarál, amit a
    new operátorral fogunk létrehozni
  • tomb new int20
  • A tömb ismeri a saját méretét, amit a length
    mezovel le is lehet kérdezni.
  • System.out.println(tomb.length)
  • Indexeléskor a tömb ellenorzi az indexet, hiba
    esetén IndexOutOfBoundsException kivétel váltódik
    ki.

22
Többdimenziós tömbök
  • Nincsen többdimenziós tömb, de egy tömbnek
    lehetnek tömb elemei, akár különbözo méretuek is.
    Például
  • int tomb new int3 // 3 tömbbol álló
    tömb
  • for (int i 0 i lt tomb.length i)
  • tombi new inti1
  • for (int j0 j lt tombi.length j)
  • tombij 0

23
Példa többdimenziós tömbre
  • public class tomb
  • public static void main(String args)
  • int tomb new int10 // 10 tömbbol álló
    tömb
  • int szamlalo 9
  • for (int i 0 i lt tomb.length i)
  • tombi new inti1
  • for (int j 0 j lt tombi.length j)
  • tombij szamlalo
  • for (int i 0 i lt tomb.length i)
  • for (int j 0 j lt tombi.length j)
  • System.out.print( tombij " " )
  • System.out.println( )

24
Az elozo program kimenete
  • 10
  • 11 12
  • 13 14 15
  • 16 17 18 19
  • 20 21 22 23 24
  • 25 26 27 28 29 30
  • 31 32 33 34 35 36 37
  • 38 39 40 41 42 43 44 45
  • 46 47 48 49 50 51 52 53 54
  • 55 56 57 58 59 60 61 62 63 64
  • A folytatáshoz nyomjon meg egy billentyut . . .

25
Operátorok
  • , -, , /, , -, , /, maradék
  • , -- prefix és postfix formában
  • , - elojel
  • gt, gt, lt, lt, , ! relációs operátorok
  • , logikai ÉS, VAGY, a második operandust
  • csak szükség esetén értékeli ki
  • , logikai ÉS, VAGY, mindkét operandust
  • mindig kiértékeli
  • ! logikai NEM
  • logikai kizáró VAGY, (XOR)
  • ltlt, gtgt bitenkénti léptetés balra, jobbra
    (elojelbittel)
  • gtgtgt bitenkénti léptetés jobbra (0 lép be)
  • , , , ! bitenkénti ÉS, VAGY, Kizáró VAGY, NEM
  • , , -, , /, , , , , ltlt, gtgt, gtgtgt

26
Egyéb operátorok
  • Oper. Példa Leírás
  • ? felt ? kif1 kif2 ha felt igaz, akkor kif1,
    egyébként kif2
  • típus, vált deklarál egy tömbváltozót
  • típusop1 létrehoz egy op1 elemu tömböt a
    new-val együtt
  • op1op2 indexelés, az op1 tömb op2-1 -dik
    eleme
  • . op1.op2 mezohivatkozás,
  • op1 objektum, vagy osztály op2 eleme
  • () op1(params) metódus deklaráció, vagy hívás
  • (type) (type) op1 típuskonverzió, op1-et type
    típusúra konvertálja
  • new new op1 új objektum, vagy tömb létrehozása
  • op1 instanceof op2 igaz, ha op1 az op2 egy
    példánya

27
Sztringek kezelése
  • C nyelv
  • nincsen igazi sztring típus
  • char-gal valósítjuk meg
  • Veszélyes!
  • Java nyelv
  • nyelvi szinten valósítja meg a sztringek
    kezelését
  • konstans sztringek kezelése String osztály
  • változó sztringek kezelése StringBuffer osztály

28
String osztály
  • Konstans sztringek kezelésére szolgál. Egyszeri
    értékadás után nem lehet módosítani.
  • String objektum létrehozása, különbözo
    konstruktorokkal
  • Explicit konstruktor hívással
  • String s1 new String()
  • String s2 new String("Ez " 1 " sztring!")
  • Implicit konstruktor hívással
  • String s1 "NYME FMK"
  • String s2 s1 " INF. INT. " 2004
  • Karaktertömbbol
  • char karaktertomb 'S', 'o', 'p', 'r', 'o',
    'n'
  • String s3 new String(karaktertomb) //
    "Sopron"
  • String s4 new String(karaktertomb, 2, 3) //
    "pro"

29
String osztály - Konverziók
  • String.valueOf metódus
  • boolean, char, double, float, int, long
    típusoknál értelemszeruen
  • char esetén uaz. mint az elozo dián a
    konstruktoroknál. (DE! A valueOf nem csinál
    másolatot, a copyValueOf igen!)
  • Object esetén
  • ha az objektum null, akkor "null"
  • egyébként meghívja az osztály toString metódusát,
    minden osztály maga definiálhatja ezt a metódust
  • Például
  • boolean log false
  • char ch 'X'
  • double pi 3.14
  • String s5 String.valueOf(log)
    String.valueOf(ch) String.valueOf(pi) // s5
    "falseX3.14"
  • Implicit konverzió az egyszeru osztályok
    toString metódusával. Lásd az elozo dia piros
    számait!

30
String osztályA tartalom elérése
  • Egy karakter elérése charAt metódus
  • char ch s3.charAt(2) // ch 'p'
    (s3"Sopron")
  • char ch2 "Sopron".charAt(0) // ch2 'S'
  • Két sztring összehasonlítása equals,
    equalsIgnoreCase metódus
  • boolean b1 "alma".equals("ALMA") //
    false
  • boolean b2 "alma".equalsIgnoreCase("ALMA") //
    true
  • Az a referenciákat hasonlítja össze, nem a
    tartalmat!
  • Két sztring lexikografikus sorrendje compareTo
    metódus
  • 0 ha a két sztring azonos
  • negatív ha az aktuális példány a kisebb
  • pozitív ha az aktuális példány a nagyobb
  • int i "Gyár".compareTo("Gyor") // i 2
  • de az abszolút érték nem definiált (0, -0)!
  • Keresés indexOf, lastIndexOf, startsWith,
    endsWith metódus

31
String osztályKeresés
  • Karakter vagy sztring keresése indexOf metódus
  • int index1 "kukuriku".indexOf('u') //
    1
  • int index2 "kukuriku".indexOf('u', 2) //
    3
  • // a 2. indexu elemtol indul a keresés
  • int index3 "kukuriku".indexOf("ku") //
    0
  • int index4 "kukuriku".indexOf("ka") //
    -1
  • Keresés hátulról lastIndexOf metódus
  • int index5 "kukuriku".lastIndexOf("ku") //
    6
  • Így kezdodik-e a sztring startsWith metódus
  • boolean start "file.java".startsWith("fi") //
    true
  • Így végzodik-e a sztring endsWith metódus
  • boolean vege "file.java".endsWith(".jav") //
    false

32
String osztályEgyéb muveletek
  • A sztring hossza length metódus
  • int len "Sopron".length() // len 6
  • Kis-, nagybetu váltás toLowerCase, toUpperCase
    metódus
  • String vegyes "Kicsi És nAgYbEtUk Vegyesen"
  • String kicsi vegyes.toLowerCase()
  • String nagy vegyes.toUpperCase()
  • Betucsere replace metódus
  • Részsztring substring metódus (tól, ig, az ig.
    karakter már nem lesz benne)
  • String kacsa kicsi.substring(0, 5).replace('i',
    'a')
  • Vezeto és záró white space-ek eltávolítása trim
    metódus
  • String s " abcd "
  • String lenyeg s.trim() // lenyeg "abcd"
  • A kiinduló sztring ezekkel a metódusokkal sem
    változik meg!

33
StringBuffer osztály
  • Változtatható és hosszú sztringek kezelésére
    szolgál.
  • Dinamikusan növekszik a sztring hossza. A
    StringBuffer nyilvántartja a pillanatnyi méretét
    (length) és a kapacitását (capacity).
  • StringBuffer objektum létrehozása, különbözo
    konstruktorokkal
  • StringBuffer sb1 new StringBuffer() // L0
    C16
  • StringBuffer sb2 new StringBuffer(10) // L0
    C10
  • String s "Sopron"
  • StringBuffer sb3 new StringBuffer(s) // L6
    C22 (616)
  • A kapacitás növelése
  • automatikusan, ha szükséges
  • ensureCapacity(uj)
  • ha uj lt capacity(), akkor nem változik semmi
  • egyébként az új kapacitás a következok közül a
    nagyobb
  • uj
  • 2 capacity() 2

34
StringBuffer osztályAppend, Insert
  • append(s) a string végére fuzi s-et sztring
    formában.
  • insert(poz, s) a poz pozíciótól kezdve fuzi be
    s-et.
  • s lehetséges típusai és a konverzió módja
    megegyezik a String osztálynál látottakkal.
Write a Comment
User Comments (0)
About PowerShow.com