Upload
vanhanh
View
222
Download
0
Embed Size (px)
Citation preview
2
Széchenyi István Egyetem
A Java nyelv fő jellemzői Egyszerű Objektumorientált Elosztott Robusztus (hibatűrő, megbízható): Biztonságos Hordozható Architektúra-független
(gépfüggetlen): Interpretált Nagy teljesítményű Többszálú Dinamikus
3
Széchenyi István Egyetem
A java virtuális gép (JVM)
Képzeletbei, „ideális” számítógép. Szoftveresen megvalósított működési környezet.
(az op. rendszer egy folyamata).
Feladata:Betölti a használt osztályokat (.class állományok)Az ott található blokkokat, utasításokat értelmezi, átalakítja gépi
kódú üzenetekké és futtatja.Memóriát kezel, kioszt, felszabadít, op. rendszerrel kapcsolatot tart, erőforrásokat használ.
4
Széchenyi István Egyetem
5
Széchenyi István Egyetem
6
Széchenyi István Egyetem
7
Széchenyi István Egyetem
A Java adattípusai
8
Széchenyi István Egyetem
A Java adattípusai
9
Széchenyi István Egyetem
A Java megszámlálható egész adattípusai Egészek:
byte (8 bites, -128 – 127) short (16 bites, -32.768 – 32.767) int (32 bites, -2.147.483.648 – 2.147.483.647) long (64 bites, -9.223.372.036.854.775.808 –
9.223.372.036.854.775.807) Pl.:
int újSzoket, régiSzoket, newSocket, oldSocket; byte elsőBájt, lastByte; byte utolsóBájt = 12; (értékadással) int folyamAzonosító = 017; (oktális értékadás) int streamId = 017; int kapcsolóAzonosító = 0XFF; (hexadecimális értékadás) int streamControlId=0X0F, switchId=0XBB;
10
Széchenyi István Egyetem
Lebegőpontos típusok: float (32 bites, 1.40129846432481707e-45 -
3.40282346638528860e+38) double (64 bites, 4.94065645841246544e-324d -
1.79769313486231570e+308d)
Pl.: float összeg=23.8f, újÖsszeg=24.f; float cashValue=23.8f, newCashValue; double teljesÖsszeg=1.56e2, régiÖsszeg=2.34E4d,
össz=7.34d; double newTotal=1.56e2, oldTotal=2.34E4;
11
Széchenyi István Egyetem
Karakter típusú adatok:char (2 bájt/karakter!, 0 – 65.535 )Pl.:
char elsőBetű, másodikBetű='b'; char senseChar, ringChar='e';
Logikai típusú adatokboolean (1 bit)Pl.:
boolean kilép, vanÉrték=true; boolean loopSensor, pollSensor=true;
12
Széchenyi István Egyetem
Kulcsszavak és azonosítókabstract boolean break byte case
catch char class const continue
default do double else extends
final finally float for goto
if implements import instanceof int
interface long native new package
private protected public return short
static super switch synchronized this
throw throws transient try void
volatile while
13
Széchenyi István Egyetem
Kifejezések, operátorok
prefix – az operátor az operandus előtt áll, postfix – az operátor az operandus után áll, vagy infix jellegű – az operátor az operandusok között
helyezkedik el.
A kifejezés kiértékelése a műveleti jelek közötti precedencia szabály alapján következik
14
Széchenyi István Egyetem
Precedencia
Operátor Megnevezés[ ] tömb indexelés
. tagelérés pl: java.lang.Math.PI
( ) zárójeles kifejezés
kif++ kif-- postfix operátorok
++kif --kif +kif –kif prefix operátorok
! ~ logikai NEM, bitenkénti NEM
new példányosítás
(típus)kif típuskényszerítés
* / % aritmetikai műveletek
+ -
<< eltolás balra, a legkisebb bit 0-t kap
>> eltolás jobbra, és balról a legmagasabb helyiértékű bit értéke kerül be
>>> eltolás jobbra, balról 0 érkezik.
15
Széchenyi István Egyetem
PrecedenciaOperátor Megnevezés
< > <= >= összehasonlítások
instaceof az objektum példánya-e az osztálynak
== != egyenlőségvizsgálatok (referencia összehasonlítás)
& bitenkénti ÉS
^ bitenkénti kizáró VAGY
| bitenkénti VAGY
&& logikai ÉS
|| logikai VAGY
? : feltételes kifejezés
= += -= *= /= %= hozzárendelés, értékadás
>>= <<= >>>= bit szintű értékadások
&= ^= |=
16
Széchenyi István Egyetem
Referenciák, példányosítás
A „példányok” - „objektumok” típusa Minden objektum, tömb, felsorolás ilyen A referencia != mutató, (kicsit több annál :)
Pl: Osztálytípus peldánynév;Teglalap t1;String szoveg1;String szoveg2 = new String(”Béla”);Teglalap t2 = new Teglalap(3,4);
A null referenciaszoveg1 = null;
17
Széchenyi István Egyetem
Hozzáférési kategóriák (adatrejtés)
nyilvános tagok (public) csomag-szintű tagok (jelöletlen) védett tagok (protected) privát tagok (private)
18
Széchenyi István Egyetem
Vezérlési szerkezetek utasítások feltételes kifejezés elágazások
if if-else if-else-if… switch
ciklusok while do-while for
19
Széchenyi István Egyetem
Feltételes kifejezésekif(<logikai kif.>) <utasítás>; (vagy utasítás blokk);
if(<felt.>) {<utasítás;>}else{<utasítás;>}
if(<felt.>) {<utasítás;>}else if(<felt.2>) {<utasítás;>}else {<utasítás;>}
switch(<argumentum>){ case <érték1>: utasítás(ok); break; case <értékn>: utasítás(ok); break; default: utasítás(ok);}
<argumentum>: megszámlálható típus, (java 7-től: String is!)
20
Széchenyi István Egyetem
Elöl- és hátultesztelő ciklusokwhile: while (<kifejezés igaz>) {
<utasítások;> }
while (i < 5) { sum += tomb[i]; i++; }
do-while: do{
<utasítások;> }while (<kifejezés igaz>)
do {i++;nameArray[i] = ””; } while (i != lastIndex);
PÉLDA demo
21
Széchenyi István Egyetem
A tömb adattípus
22
Széchenyi István Egyetem
Tömbök deklarációja
<elemtípus>[] <tömbazonosító>; <elemtípus> <tömbazonosító>[];
int cT[], d; //„d” egyetlen elemi adat!!! Alkalmazott[] dolgozok; ”int a[3];” -> fordítási hibát okoz!!
23
Széchenyi István Egyetem
Tömbök létrehozása
new <elemtípus> [méret]; iT = new int[365];dT = new double[365/12]; //30!sT = new String[4];
24
Széchenyi István Egyetem
Tömbök helyfoglalása
short [] aTomb = new short[10];for(int i=0; i < aTomb.length; i++){aTomb[i] = i*5;}
25
Széchenyi István Egyetem
Tömbök deklarálása inicializáló blokkban<elemtípus> [] <tömbazonosító> = { <érték0>, <érték1>, …};
int[] aTomb = {1, 2, 3, 7, 11 };
char[] maganh = { ’a’, ’e’, ’i’, ’o’, ’u’};
boolean[] valaszok = { true, true, false};
double[] arak = {1202.1, 33.35};
26
Széchenyi István Egyetem
Többdimenziós tömbök
<elemtípus>[][] <tömbazonosító>;
Egy 2 dimenziós tömb deklarációja:
double [][] a;
A 2 dimenziós tömb létrehozása:
a = new double[2][3];
27
Széchenyi István Egyetem
Többdimenziós tömb megadása inicializáló blokkal
<elemtípus> [][] <tömbazonosító> = { {<érték0>, <érték1>, …} , {<érték0>, <érték1>, …} , …};
int[][] honapNapjai = {
{0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31},
{0, 31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31}
};
28
Széchenyi István Egyetem
Többdimenziós tömbök helyfoglalása
int[][] honapNapjai = {
{0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31},
{0, 31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31}
};
29
Széchenyi István Egyetem
Többdimenziós tömbök egyéb esetei
Megadható különböző méretű, több lépésben létrehozott többdimenziós tömb is:
int[][] alsoMatrix = new int[3][]; for (int i=0; i < alsoMatrix.length; i++ ){alsoMatrix[i] = new int[i+1];for (int j=0; j < alsoMatrix[i].length; j++ ){
alsoMatrix[i][j] = 1;}
30
Széchenyi István Egyetem
Objektumokból képzett tömbökObejektumtípus [] azon = new Objektumtípus[n];
String [] honapok = new String[12];
vagy inicializátorral:
String [] honapok = {”január”, ”február”, …};
31
Széchenyi István Egyetem
Tömbök bejárása 1
for (<inic.> ; <log.kif.> ; <lépt.>){<ut.>}int i = 0 ;
for ( ; i < 10; i++) { a[i] = 0;}
for(int i = 0; i < 10; i++) { a[i] = 0;}
for(int i = 0; i < 10; ) {a[i] = 0;i++; }
for(int i=0, j=10; i<=j; i++, j--){ szamlalo++;}
for(int i=start+newList;i<=followBitSum;i+=2){utasítások ;}
32
Széchenyi István Egyetem
Tömbök bejárása 2
for (<típus> <elem> : <tömb>){}
int total = 0;int t[] = new int[10];…for(int i: t){ total += i;}
33
Széchenyi István Egyetem
Szöveges adatok kezeléseA String osztály
34
Széchenyi István Egyetem
Karakteres típusok
'a', '\t', '\b',.... – karakteres konstans char – alaptípusKarakterekből képzett tömbök:char sor[] = new char[50];Feldolgozásuk: C nyelvhez hasonlóan
35
Széchenyi István Egyetem
Sztringkezelés Egy új, önálló osztály a szöveges adatok kezelésére, együttműködés az alaptípusokkal, automatikus konverzióban használható, a String osztály használata
String szov1 = new String(”első szöveg”);
String szov2 = ”második szöveg”;
String szov3 = ”Eredmény =”+3”;
Konstans karakterláncok kezelése. Hatékony és gyors karakterlánc kezelés. Egyszerű műveletek és metódusok.
36
Széchenyi István Egyetem
Sztringkezelés
Alapműveletek: length(), charAt(i), getBytes(), split(string,delim), toCharArray(), valueOf(g,i), substring(i,db)
Csak kevés módosító művelete van: concat(g), replace(mit, mire), toLowerCase(), toUpperCase(), trim().
37
Széchenyi István Egyetem
Sztringkezelés – módosítható szöveges adatok A StringBuffer osztály
String – StringBuffer átalakítás oda-visszahozzáfűzés, beszúrás (append, insert)rövidítés, bővítésmegfordítható (reverse)karakterek, réssztringek törölhetők
38
Széchenyi István Egyetem
StringBuffer (StringBuilder)
Metódusai:capacity(), length(), charAt(i),indexOf(g), lastIndexOf(g)append(g), delete(i1, i2), insert(iPosn, g), getChars(i),setCharAt(iposn, c), substring(), replace(i1,i2,gvalue), reverse(),trimToSize(), toString(g)
39
Széchenyi István Egyetem
Szövegek darabolása – split metódus, StringTokenizerGyakori feladat a szövegek szétdarabolása fehér karakterek mentén:1. String osztály split metódus String[] eredmeny = "Egy darabolási teszt feladat".split("\\s");
for (int x=0; x<eredmeny.length; x++) System.out.println(eredmeny[x]);
(reguláris kifejezések!)2. StringTokenizer osztály
Később tárgyaljuk (a java.util csomagnál)!
StringTokenizer st = new StringTokenizer("Egy darabolási teszt"); while (st.hasMoreTokens()) { System.out.println(st.nextToken()); }
40
Széchenyi István Egyetem
Csomagoló (burkoló) osztályok
∀ elemi típushoz ∃ egy ún. csomagoló osztály: Boolean, Character, Integer, Long, Float, Double
Az adott típusú értéket egy objektumban helyezi el, amely ezután referenciaként érhető el:
+ : összetett adatszerkezetekben hatékonyabban használhatóak, elérhetőek egyes speciális műveletek
– : helypazarló Példa:
Float f = new Float(3.14);int n = Integer.parseInt(”1234”);
41
Széchenyi István Egyetem
Csomagoló osztályok