A Java jellemzői Hordozható, platformfüggetlen forráskód és bájtkód szinten forráskód és bájtkód szinten Tisztán objektumorientált csak osztályok, illetve.

Slides:



Advertisements
Hasonló előadás
C# nyelvi áttekintő A „Programozás C# nyelven (Illés Zoltán)”
Advertisements

Osztály leszármaztatás
1 Hernyák Zoltán Programozási Nyelvek II. Eszterházy Károly Főiskola Számítástudományi tsz.
Programozás III STRING-XML.
V. Osztályok használata, készítése
Jt Java Feltételek, logikai kifejezések. jt 2 Logikai operátorok Logikai kifejezésekre alkalmazhatók a következő műveletek: 1. nem! 2. és&ill.&& 3. kizáró.
1 Hernyák Zoltán Programozási Nyelvek II. Eszterházy Károly Főiskola Számítástudományi tsz.
Öröklődés 2..
JavaScript.
© Kozsik Tamás Tömbök, kollekciók és egyéb alaposztályok.
© Kozsik Tamás Beágyazott osztályok A blokkstrukturáltság támogatása –Eddig: egymásba ágyazható blokk utasítások Osztálydefiníciók is egymásba.
Hernyák Zoltán Magasszintű Programozási Nyelvek I.
Turbo Pascal Változók.
Csala Péter ANDN #4. 2 Tartalom  C# - ban előre definiált típusok  Változók  Változókkal műveletek  Elágazás  Ciklus.
Sztringek.
Bevezetés a Java programozásba
Bevezetés a Java programozásba
4. előadás (2005. március 8.) Pointerek Pointer aritmetika
Osztályok Garbage collection.  általában minden osztálynak vannak adattagjai és/vagy metódusai ◦ adattagok megadása:  [láthatóság] [static] [final]
Programozás II. 3. Gyakorlat C++ alapok.
UNIVERSITY OF SZEGED D epartment of Software Engineering UNIVERSITAS SCIENTIARUM SZEGEDIENSIS Programozás II. 6. Gyakorlat const, static, dinamikus 2D.
Parancssori argumentumok Primitív típusok Operátorok Vezérlési szerkezetek Tömbök Ürmös Beáta, 2011.
Tömbök ismétlés Osztályok Java-ban Garbage collection
Mutatók, tömbök, függvények
A Java programozási nyelvSoós Sándor 1/17 Java programozási nyelv 4. rész – Osztályok II. Nyugat-Magyarországi Egyetem Faipari Mérnöki Kar Informatikai.
A Java programozási nyelvSoós Sándor 1/34 Java programozási nyelv A nyelv alapjai Nyugat-Magyarországi Egyetem Faipari Mérnöki Kar Informatikai Intézet.
A Java programozási nyelvSoós Sándor 1/16 Java programozási nyelv 6. rész – Java a gyakorlatban Nyugat-Magyarországi Egyetem Faipari Mérnöki Kar Informatikai.
Java programozási nyelv 3. rész – Osztályok I.
Java programozási nyelv 5. rész – Osztályok III.
C# Alapok Krizsán Zoltán.
C# tagfüggvények.
C# tagfüggvények.
C++ Alapok, első óra Elemi típusok Vezérlési szerkezetek
A JAVA TECHNOLÓGIA LÉNYEGE Többlépcsős fordítás A JAVA TECHNOLÓGIA LÉNYEGE Platformfüggetlenség.
Ficsor Lajos Template-ek CPP8/ 1 Template-ek. Ficsor Lajos Template-ek CPP8/ 2 A template fogalma Kiindulási probléma: tetszőleges típusokon kellene ugyanolyan.
PHP I. Alapok. Mi a PHP? PHP Hypertext Preprocessor Szkriptnyelv –Egyszerű, gyors fejlesztés –Nincs fordítás (csak értelmező) Alkalmazási lehetőségek:
Programozás Az adatokról C# -ban.
A JavaScript bemutatása
Összetett adattípusok
Programozási Nyelvek (C++) Gyakorlat Gyak 02.
IV. Java programozási alapok
Gábor Dénes Főiskola (IAI)A programozás alapjai (Java) - V. / 1 16.Objektumok, karakterláncok, csomagolók 17.Osztály készítése.
Szoftvertechnológia alapjai Java előadások Förhécz András, doktorandusz tárgy honlap:
Szoftvertechnológia alapjai Java előadások Förhécz András, doktorandusz tárgy honlap:
1. Gyakorlat - Alapok 1. Írjon konzolprogramot, amely kiírja a “Hello ELTE” üzenetet! Használja a System.out.println() -t! 2. Írjon konzolprogramot, amely.
1 Hernyák Zoltán Programozási Nyelvek II. Eszterházy Károly Főiskola Számítástudományi tsz.
Hernyák Zoltán Programozási Nyelvek II.
1 Hernyák Zoltán Web: Magasszintű Programozási Nyelvek I. Eszterházy.
Javascript Microsoft által készített kiegészítése Statikus típusosság Nagy projektek Windows 8 fejlesztésénél WinRT egy részét ebben írták Nyílt forráskódú,
Komoróczy Tamás 1 Java programozási nyelv Stringek.
Java programozási nyelv Metódusok
Java programozási nyelv Adatbekérés konzolról
Programozás III KOLLEKCIÓK.
Egyenesvonalú (lineáris) adatszerkezetek
Objektum orientált programozás
A Visual Basic nyelvi elemei
Programozás III KOLLEKCIÓK.
Típuskonverzió a C++ nyelvben
UNIVERSITY OF SZEGED D epartment of Software Engineering UNIVERSITAS SCIENTIARUM SZEGEDIENSIS Programozás I. 3. gyakorlat.
1Szegedi Tudományegyetem Természettudományi és Informatikai KarAntal Gábor Programozás I. 6. gyakorlat.
1Szegedi Tudományegyetem Természettudományi és Informatikai KarAntal Gábor Programozás I. 4. gyakorlat.
TÁMOP /1-2F JAVA programozási nyelv NetBeans fejlesztőkörnyezetben I/13. évfolyam A Character osztály. String és Stringbuffer osztályok.
TÁMOP /1-2F JAVA programozási nyelv NetBeans fejlesztőkörnyezetben I/13. évfolyam Osztályok, objektumok definiálása és alkalmazása. Saját.
Krizsán Zoltán, iit C# osztályok 2 Adattagok  Osztály hatáskörben definiált változó.  Formája: [attribútum] [módosító] típus azonosító [=kezdő érték][,
Informatikai gyakorlatok 11. évfolyam
Hernyák Zoltán Magasszintű Programozási Nyelvek I.
Hernyák Zoltán Magasszintű Programozási Nyelvek I.
JAVA programozási nyelv NetBeans fejlesztőkörnyezetben I/13. évfolyam
JAVA programozási nyelv NetBeans fejlesztőkörnyezetben I/13. évfolyam
JAVA programozási nyelv NetBeans fejlesztőkörnyezetben I/13. évfolyam
Előadás másolata:

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

A Java nyelv alapjai Egyszerű típusok 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. egyszerű típusosztályleírás booleanBooleanlogikai típus (true, false) charCharacter16 bites Unicode karakter byteInteger8 bites egész szám ( ) shortInteger16 bit, ( ) intInteger32 bit ( ) longLong64 bit ( ) floatFloat32 bit (-3, E , E+38) doubleDouble64 bit (-1, E ) egyszerű típusosztályleírás booleanBooleanlogikai típus (true, false) charCharacter16 bites Unicode karakter byteInteger8 bites egész szám ( ) shortInteger16 bit, ( ) intInteger32 bit ( ) longLong64 bit ( ) floatFloat32 bit (-3, E , E+38) doubleDouble64 bit (-1, E )

Literálok Logikai értékek: true, false Egész számok: 0 kezdetű számok oktális (8-as számrendszer), pl kezdetű számok oktális (8-as számrendszer), pl x kezdetű számok hexadecimális (16-os számrendszer), pl. 0xff 0x kezdetű számok hexadecimális (16-os számrendszer), pl. 0xff minden más szám decimális számrendszerben lesz értelmezve, pl. 255 minden más szám decimális számrendszerben lesz értelmezve, pl. 255 egy egész szám után írt l vagy L betű long típust deklarál egy egész szám után írt l vagy L betű long típust deklarál Lebegőpontos számok: decimális számként adhatók meg tizedesponttal és e vagy E exponenssel 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égződéssel lehet float típust deklarálni, pl. 3.14, , 12.3e4 ez önmagában double típust jelent, f vagy F végződéssel lehet float típust deklarálni, pl. 3.14, , 12.3e4 Karakterek: aposztrófok között kell megadni, pl. 'a', 'Z' escape szekvenciák, mint a C nyelvben, lásd a következő oldalon! escape szekvenciák, mint a C nyelvben, lásd a következő oldalon! Szövegek (String): idézőjelek között kell megadni, pl. “Helló Világ”

Escape szekvenciák KódLeírás \nújsor \ttabulátor \begy karakter vissza, törlés \r“kocsi” vissza, soremelés nélkül \flapdobás \\\ karakter \'' karakter, aposztróf \”“ karakter, idézőjel

Tömbök A C/C++ nyelvvel ellentétben ez igazi típus, nem pointer A tömbök indexelése 0-val kezdődik Tömb deklarációja a [] jellel történik a típus vagy a változó neve után: int[] EgeszTomb, tomb; // mindkettő tömb int egeszszam, tomb[]; // skalár és tömb ez egy tetszőleges méretű tömböt deklarál, amit a new operátorral fogunk létrehozni: ez egy tetszőleges méretű tömböt deklarál, amit a new operátorral fogunk létrehozni: tomb = new int[20]; A tömb ismeri a saját méretét, amit a length mezővel le is lehet kérdezni. System.out.println(tomb.length); Indexeléskor a tömb ellenőrzi az indexet, hiba esetén IndexOutOfBoundsException kivétel váltódik ki.

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öző méretűek is. Például: int[][] tomb = new int[3][]; // 3 tömbből álló tömb for (int i = 0; i < tomb.length; i++) { tomb[i] = new int[i+1]; for (int j=0; j < tomb[i].length; j++) tomb[i][j] = 0; }

Példa többdimenziós tömbre public class tomb { public static void main(String[] args) { int[][] tomb = new int[10][]; // 10 tömbből álló tömb int szamlalo = 9; for (int i = 0; i < tomb.length; i++) { tomb[i] = new int[i+1]; for (int j = 0; j < tomb[i].length; j++) for (int j = 0; j < tomb[i].length; j++) tomb[i][j] = ++szamlalo; } tomb[i][j] = ++szamlalo; } for (int i = 0; i < tomb.length; i++) { for (int j = 0; j < tomb[i].length; j++) System.out.print( tomb[i][j] + " " ); System.out.print( tomb[i][j] + " " ); System.out.println( ); } System.out.println( ); }}}

Operátorok +, -, *, /, % +, -, *, /, maradék ++, -- prefix és postfix formában +, - előjel >, >=,, >=, <, <=, ==, !=relációs operátorok &&, ||logikai ÉS, VAGY, a második operandust csak szükség esetén értékeli ki csak szükség esetén értékeli ki &, |logikai ÉS, VAGY, mindkét operandust mindig kiértékeli mindig kiértékeli !logikai NEM ^logikai kizáró VAGY, (XOR) >bitenkénti léptetés balra, jobbra (előjelbittel) >bitenkénti léptetés balra, jobbra (előjelbittel) >>>bitenkénti léptetés jobbra (0 lép be) &, |, ^, !bitenkénti ÉS, VAGY, Kizáró VAGY, NEM =, +=, -=, *=, /=, %=, &=, |=, ^=, >=, >>>=

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öző konstruktorokkal: Explicit konstruktor hívással: Explicit konstruktor hívással: String s1 = new String(); String s2 = new String("Ez " " sztring!"); Implicit konstruktor hívással: Implicit konstruktor hívással: String s1 = „NYF"; String s2 = s1 + " MAT.INT " ; Karaktertömbből: Karaktertömbből: char[] karaktertomb = {‘N', ‘y', ‘F'}; String s3 = new String(karaktertomb); //„NyF" String s4 = new String(karaktertomb, 1, 2);//„yF"

String osztály - Konverziók String.valueOf metódus: boolean, char, double, float, int, long típusoknál értelemszerűen boolean, char, double, float, int, long típusoknál értelemszerűen Például: 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"

String osztály A tartalom elérése Egy karakter elérése: charAt metódus char ch = s3.charAt(2); // ch = ‘F' (s3=„NyF") char ch2 = „NyF".charAt(0); // ch2 = ‘N' 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! Az == a referenciákat hasonlítja össze, nem a tartalmat! Két sztring lexikografikus sorrendje: compareTo metódus 0ha a két sztring azonos negatívha az aktuális példány a kisebb pozitívha az aktuális példány a nagyobb int i = "Gyár".compareTo("Győr"); // i = -2 (lehetne!) de az abszolút érték nem definiált (+0, -0)! de az abszolút érték nem definiált (+0, -0)!

String osztály Keresés Karakter vagy sztring keresése: indexOf metódus int index1 = "kukuriku".indexOf('u'); // 1 int index2 = "kukuriku".indexOf('u', 2); // 3 // a 2. indexű elemtől indul a keresés // a 2. indexű elemtől 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 kezdődik-e a sztring: startsWith metódus boolean start = "file.java".startsWith("fi"); // true Így végződik-e a sztring: endsWith metódus boolean vege = "file.java".endsWith(".jav"); // false

String osztály Egyéb műveletek A sztring hossza: length metódus int len = „Nyíregyháza".length(); // len = 11 Kis-, nagybetű váltás: toLowerCase, toUpperCase metódus String vegyes = "Kicsi És nAgYbEtŰk Vegyesen"; String kicsi = vegyes.toLowerCase(); String nagy = vegyes.toUpperCase(); Betűcsere: 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'); Vezető é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!

Változók A változó deklaráció formája: [módosítók] típus változó [inicializáció] [módosítók] típus változó [inicializáció] vesszővel felsorolhatunk több változót is Fontos módosítók: final: konstanst hoz létre final: konstanst hoz létre értékadással nem változtatható meg beállítása: inicializáció helyben, konstruktorok, inicializáló blokk static: osztályváltozó static: osztályváltozó Hozzáférés: public, protected, private, üres Hozzáférés: public, protected, private, üres egyetlen példányban létezik az osztályban Változók használata önmagában önmagában minősített hivatkozás: (objektum v. osztály).változó minősített hivatkozás: (objektum v. osztály).változó

Metódusok A metódus definíció formája: [módosítók] típus Név([paraméterek]) {törzs} [módosítók] típus Név([paraméterek]) {törzs} Fontos módosítók: Hozzáférés: public, protected, private, üres Hozzáférés: public, protected, private, üres Metódusok használata önmagában önmagában minősített hivatkozás: (objektum v. osztály).metódus minősített hivatkozás: (objektum v. osztály).metódus A metódusnevek túlterhelhetők, a szignatúra egyedi szignatúra: név + paraméterek típusa, száma szignatúra: név + paraméterek típusa, száma a metódus neve megegyezhet egy változóéval is! a metódus neve megegyezhet egy változóéval is!

Egy egyszerű osztály public class Auto1 { public class Auto1 { private String rendszam; private String rendszam; private String tipus; private String tipus; private int ajtoszam; private int ajtoszam; private int hengerszam; private int hengerszam; private int ev; private int ev; private int suly; private int suly; private int kilometer; private int kilometer; private float fogyasztas; private float fogyasztas; // folytatás a következő dián

Egy egyszerű osztály, folyt. // folytatás az előző diáról public Auto1() { public Auto1() { rendszam = ""; rendszam = ""; tipus = ""; tipus = ""; ajtoszam = hengerszam = ev = suly = kilometer = 0; ajtoszam = hengerszam = ev = suly = kilometer = 0; fogyasztas = 0.0f; fogyasztas = 0.0f; } // folytatás a következő dián

Egy egyszerű osztály, folyt. // folytatás az előző diáról public void ajtoszam( int a ) public void ajtoszam( int a ) { ajtoszam = a; } { ajtoszam = a; } public int ajtoszam() public int ajtoszam() { return ajtoszam; } { return ajtoszam; } public void hengerszam( int h ) public void hengerszam( int h ) { hengerszam = h; } { hengerszam = h; } public int hengerszam() public int hengerszam() { return hengerszam; } { return hengerszam; } } // az osztály vége } // az osztály vége

Az osztály használata public class AutoTest { public static void main( String[] args ) { public static void main( String[] args ) { Auto1 kocsi = new Auto1(); Auto1 kocsi = new Auto1(); kocsi.ajtoszam( 5 ); kocsi.ajtoszam( 5 ); kocsi.hengerszam ( 4 ); kocsi.hengerszam ( 4 ); System.out.println( "kocsi.ajtoszam: " + kocsi.ajtoszam() ); System.out.println( "kocsi.ajtoszam: " + kocsi.ajtoszam() ); System.out.println( "kocsi.hengerszam: " + kocsi.hengerszam() ); System.out.println( "kocsi.hengerszam: " + kocsi.hengerszam() ); }}

Konstruktorok A konstruktor a példányosításkor automatikusan lefutó programkód. Miben különbözik a metódusoktól? neve megegyezik az osztály nevével neve megegyezik az osztály nevével nincs visszatérési érték, void sincs! nincs visszatérési érték, void sincs! módosítóként csak a hozzáférés módosítók használhatók módosítóként csak a hozzáférés módosítók használhatók Több konstruktort is definiálhatunk különböző szignatúrával Ha nem definiálunk konstruktort, akkor a fordító létrehoz egyet, ami public, paraméter nélküli és a törzse üres. A this kulcsszóval hivatkozhatunk az aktuális példányra. Így elérhetjük az elfedett változó neveket, és más konstruktorokat is.

Az Auto osztály újra public class Auto2 { public class Auto2 { String rendszam; String rendszam; String tipus; String tipus; int ajtoszam; int ajtoszam; int hengerszam; int hengerszam; int ev; int ev; int suly; int suly; int kilometer; int kilometer; float fogyasztas; float fogyasztas; // folytatás a következő dián

Az Auto2 konstruktorai 1 public Auto2( String rendszam, String tipus, int ajtoszam, int hengerszam, int ajtoszam, int hengerszam, int ev, int suly, int kilometer, float fogyasztas) { int ev, int suly, int kilometer, float fogyasztas) { this.rendszam = rendszam; this.rendszam = rendszam; this.tipus = tipus; this.tipus = tipus; this.ajtoszam = ajtoszam; this.ajtoszam = ajtoszam; this.hengerszam = hengerszam; this.hengerszam = hengerszam; this.ev = ev; this.ev = ev; this.suly = suly; this.suly = suly; this.kilometer = kilometer; this.kilometer = kilometer; this.fogyasztas = fogyasztas; this.fogyasztas = fogyasztas; }

Az Auto2 konstruktorai 2 public Auto2() { this( "", "", 0, 0, 0, 0, 0, 0.0f ); this( "", "", 0, 0, 0, 0, 0, 0.0f ); } public Auto2( String rendszam, String tipus) { this( rendszam, tipus, 0, 0, 0, 0, 0, 0.0f ); this( rendszam, tipus, 0, 0, 0, 0, 0, 0.0f ); }