Rchtsblhrung Dsr Folnsatz st urhbrrchtlch gschützt. Ändrungn an dn Foln snd untrsagt. Ausschlßlch n ncht-kommrzll Nutzung st kostnfr. Andrnfalls wrd n Gbühr fällg. Wndn S sch hrfür an dn Autor. Java und OOP Das Buch Chrstan Slbrbaur www.javaundoop.d 10
Kaptl 2: Grundlmnt dr Programmrung
Varabln Varabln snd Spchrbrch m Arbtsspchr Anhand ns Namns kann man Wrt hnnschrbn und auch wdr auslsn Varabln bstzn n fsts Format, das durch nn Datntyp fstglgt st (z.b. Ganz Zahl, Zchnktt) Java und OOP Das Buch Chrstan Slbrbaur www.javaundoop.d 12
Bspl nt x = 5, quadrat; quadrat = x * x; Systm.out.prntln("Das Quadrat von + x + " st + quadrat); Spchrabbld: x 5 quadrat 25 Im Spchr sthn gntlch nur d Wrt, ncht d Namn dr Varabln. Ltztr snd Alasnamn für Adrssn. Java und OOP Das Buch Chrstan Slbrbaur www.javaundoop.d 13
Elmntar Datntypn Bschrbung Typ Bsplwrt Wrtbrch Größ Zchn char A, B, $, % Blbgs Zchn 2 Byt Boolschr Wrt (wahr, falsch) boolan tru, fals tru, fals 1 Byt Ganz Zahl byt short nt long -17, 123-128 bs +127-32.768 bs +32.767-2.147.483.648 bs +2.147.483.647-9.223.372.036.854.775.808 bs +9.223.372.036.854.775.807 1 Byt 2 Byt 4 Byt 8 Byt Gltkommazahl float doubl 3.14, 1.414-3,40282347E+38 bs +3,40282347E+38-1,7976931348623157E+308 bs +1,7976931348623157E+308 4 Byt 8 Byt Java und OOP Das Buch Chrstan Slbrbaur www.javaundoop.d 14
Typumwandlung (Elm. Typn) Umwandlung von Typ dr Spalt nach Typ dr Zl: byt short nt long float doubl boolan char byt x short x nt x long x float x doubl x boolan x x x x x x x char x : mplzt Typumwandlung möglch : nur xplzt Typumwandlung möglch (Cast-Oprator notwndg) x: kn Typumwandlung möglch Java und OOP Das Buch Chrstan Slbrbaur www.javaundoop.d 15
Bspl short x = 3; byt h = (byt)x; short y = h; // xplztr Cast // mplztr Cast Hr wrd.d.r. dr Wrt von x und y vrtauscht. Was passrt, wann dr Wrt von x zu groß für n byt st? Antwort (Bspl: x = 130): x : short h : byt y : short 130 10-126 10-126 10 0000000010000010 10000010 2 2 1111111110000010 2 Abschndn Korrkt Konvrtrung Java und OOP Das Buch Chrstan Slbrbaur www.javaundoop.d 16
Intrn Darstllung ganzr Zahln Zahlnrng für nn 3bt-Datntyp Dr Zahlnrng st so konstrurt, dass glt: -1 + +1 = 0 Dr Datntyp rcht von -4 bs +3. 000 2 = 0 10 111 2 = -1 10 001 2 = 1 10 110 2 = -2 10 010 2 = 2 10 101 2 = -3 10 011 2 = 3 10 100 2 = -4 10 D führnd 1 symbolsrt quas n ngatvs Vorzchn. Java und OOP Das Buch Chrstan Slbrbaur www.javaundoop.d 17
Darstllung von Ltraln Bspl tru, fals 1234 0x1234 01234 1234l 2.718281 a Hallo Bool schr Wrt Ganz Zahl - Dzmalzahl - Hxadzmalzahl - Oktalzahl (führnd Null!) - Dzmalzahl (ndt mt klnm L!) Gltkommazahl Enzlns Zchn Zchnktt Typ boolan byt/short/nt byt/short/nt byt/short/nt long doubl char Strng Java und OOP Das Buch Chrstan Slbrbaur www.javaundoop.d 18
Bspl Was passrt jwls b dn folgndn Anwsungn? float x = 1.23; long x = 123123123123; short x = 123; nt x = 123; short x = 123123; short x = (short)123123; doubl x = 123123123123; doubl x = 123123123123.0; doubl x = 1.123123123123123123123; nt x = 1; short y = x; Java und OOP Das Buch Chrstan Slbrbaur www.javaundoop.d 19
Opratorn Artn nach Zahl dr Oprandn (Stllgkt) Unär: n Oprand (z.b. ++ ) Bnär: zw Oprandn (z.b. * ) Trnär: dr Oprandn (z.b. b?t:f ) Assozatvtät Lnksassozatv: Abarbtung von lnks nach rchts Rchtsassozatv: Abarbtung von rchts nach lnks Übr d tatsächlch ausgführt Opraton ntschdn: Opratorsymbol Stllgkt (z.b. - xstrt unär und bnär) Typn dr Oprandn (z.b. b mndstns nm Gltkommatyp (float, doubl) b nr Dvson rfolgt n Gltkommadvson, sonst n ganzzahlg Dvson) Java und OOP Das Buch Chrstan Slbrbaur www.javaundoop.d 20
Prortätntabll Prortät 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 Opratorn () []. xpr++ xpr--! ~ -unär +unär ++xpr -xpr nw (typ) * / % + - << >> >>> < <= > >= nstancof ==!= & (btwss Und) ^ (btwss xclusvs Odr) (btwss Odr) && (logschs Und) (logschs Odr)?: = += -= *= /= %= ^= &= = <<= >>= >>>= Assozatvtät lnks rchts lnks lnks lnks lnks lnks lnks lnks lnks lnks lnks lnks rchts rchts Java und OOP Das Buch Chrstan Slbrbaur www.javaundoop.d 21
Bspl Was passrt jwls b dn folgndn Anwsungn? nt x = 3 + 4 / 2 * 5; doubl x = 5 / 3; nt x = 3; nt y = 5; nt z = x+++y; nt x = 3; nt y = 5; nt z = 4 + x == y; nt x = 5.0 / 3; Java und OOP Das Buch Chrstan Slbrbaur www.javaundoop.d 22
Kontrollstrukturn Squnz Vrzwgung (f-ls, swtch) Schlf (for, whl, do-whl) Java und OOP Das Buch Chrstan Slbrbaur www.javaundoop.d 23
If-Anwsung Bspl: nt x = 5; f (x > 10) { Systm.out.prntln("x st größr als 10"); ls { Systm.out.prntln("x st ncht größr als 10"); Dr ls-zwg dr f-anwsung st optonal. x > 10 st n logschr bzw. boolschr Ausdruck Java und OOP Das Buch Chrstan Slbrbaur www.javaundoop.d 24
Logsch Ausdrück Logsch Ausdrück snd ntwdr wahr ( tru ) odr falsch ( fals ) Logsch Ausdrück könnn durch Vrglch dargstllt wrdn. Vrglch wrdn mttls Vrglchsopratorn gbldt: Oprator < > <= >= ==!= Bzchnung klnr größr klnr-glch größr-glch st glch unglch Bsplausdruck a < b a > b a <= b a >= b a == b a!= b Java und OOP Das Buch Chrstan Slbrbaur www.javaundoop.d 25
Logsch Ausdrück (2) Mhrr Vrglch könnn durch logsch Opratorn mtnandr vrknüpft wrdn. Solch logschn Vrknüpfungn stlln auch wdr logsch Ausdrück dar. Oprator &&! Bzchnung UND ODER NICHT Bsplausdruck a < b && a < c a < b a < c!(a < b) Wahrhtstablln: a b a && b a b a b a!a tru tru tru tru tru tru tru fals tru fals fals tru fals tru fals tru fals tru fals fals tru tru fals fals fals fals fals fals Java und OOP Das Buch Chrstan Slbrbaur www.javaundoop.d 26
Swtch-Anwsung Bspl: nt anzahlkndr = 3; nt kndrgld; swtch (anzahlkndr) { cas 0: kndrgld = 0; brak; cas 1: kndrgld = 1000; brak; cas 2: kndrgld = 2200; brak; cas 3: kndrgld = 3700; brak; dfault: kndrgld = anzahlkndr * 1500; Systm.out.prntln("Für Ihr " + anzahlkndr + " Kndr rhaltn S n Kndrgld von " + kndrgld + " Euro pro Monat."); swtch rlaubt ldglch n Prüfung auf Glchht und kn blbgn logschn Ausdrück w n f-anwsung Prformancvortl: cas kann ntrn rrcht wrdn; kn Vrglch j cas notwndg Wchtg: brak ncht vrgssn! Java und OOP Das Buch Chrstan Slbrbaur www.javaundoop.d 27
For-Schlf Bspl: for (nt = 0; < 5; ++) { Systm.out.prntln("Hllo World"); Intalsrung Ausführbdngung 0 < 5 1 < 5 2 < 5 3 < 5 4 < 5 5 < 5 = 0 Schlfndurchläuf 1. Durchlauf: Ausgab von Hllo World, = 1 2. Durchlauf: Ausgab von Hllo World, = 2 3. Durchlauf: Ausgab von Hllo World, = 3 4. Durchlauf: Ausgab von Hllo World, = 4 5. Durchlauf: Ausgab von Hllo World, = 5 Abbruch Allgmn: for (Intalsrungsanw.; Ausführbdngung; Aktualsrungsanw.) { Anwsung(n) Java und OOP Das Buch Chrstan Slbrbaur www.javaundoop.d 28
Whl- und Do-Whl-Schlf Whl-Schlf Syntax: whl (Ausführbdngung) { Anwsung(n) Do-Whl-Schlf Syntax: do { Anwsung(n) whl (Ausführbdngung); Kopfgsturt Schlf Möglchrws kn nzgr Schlfndurchlauf Fußgsturt Schlf Mndstns n Schlfndurchlauf Java und OOP Das Buch Chrstan Slbrbaur www.javaundoop.d 29
Schlfn allgmn Mt brak kann dr Schlfndurchlauf abgbrochn wrdn. Mt contnu st n vorztgs Sprngn zur Schlfnbdngung möglch. In Java snd Schlfbdngungn mmr Ausführbdngungn und kn Abbruchbdngungn (allrdngs stllt n f-brak-konstllaton n Abbruchbdngung dar). In Java gbt s kopfgsturt Schlfn und fußgsturt Schlfn. Java und OOP Das Buch Chrstan Slbrbaur www.javaundoop.d 30
Arrays Array anlgn // Array anlgn mt Platz für schs nt-wrt nt[] lottozahln = nw nt[6]; // Altrnatv wrd hr dr Array glch ntalsrt: nt[] lottozahln = {5, 18, 32, 42, 45, 48; Zugrff auf nzln Elmnt ds Arrays // Ändrt auf Bass ds ntalsrtn Arrays dn Wrt 32 auf 35 lottozahln[2] = 35; // Gbt dn Wrt 5 auf dr Konsol aus Systm.out.prntln(lottozahln[0]); Abfragn dr Läng ds Arrays // Gbt dn Wrt 6 auf dr Konsol aus Systm.out.prntln(lottozahln.lngth); Java und OOP Das Buch Chrstan Slbrbaur www.javaundoop.d 31
Arrays (2) In Java kann (m Ggnsatz zu C/C++) stts d Läng von Arrays rmttlt wrdn. (mttls.lngth) Dr Zugrff auf d Elmnt rfolgt pr Indx. Das rst Elmnt hat dn Indx 0. D wtrn Indx snd aufstgnd durchnummrrt (bs.lngth 1) Arrays snd n Java Rfrnztypn und kn Wrttypn w z.b. nt und doubl Java und OOP Das Buch Chrstan Slbrbaur www.javaundoop.d 32
Wrttyp und Rfrnztyp Wrttyp Instanzn wrdn drkt adrssrt Elmntar Typn (nt, doubl, char tc.) Standardwrt: J nach Typ fstglgt (z.b. nt: 0, boolan: fals) Rfrnztyp Instanzn wrdn ndrkt übr nn Zgr bzw. n Rfrnz adrssrt Abstrakt Typn, also Klassn (sh Kap. 3) und Arrays Standardwrt: null, d.h. drzt wrd kn Instanz rfrnzrt Java und OOP Das Buch Chrstan Slbrbaur www.javaundoop.d 33
Bspl Wrttyp nt ; = 123; Rfrnztyp char[] arr; arr = nw char[3]; arr[0] = 'S'; arr[1] = 'O'; arr[2] = 'S'; 123 arr 0x1000 0x1000 3 'S' 'O' 'S' (Läng) (Elm. 0) (Elm. 1) (Elm. 2) Java und OOP Das Buch Chrstan Slbrbaur www.javaundoop.d 34
Bspl // Array anlgn mt Platz für schs nt-wrt nt[] lottozahln = nw nt[6]; // Zhung dr Zahln for (nt = 0; < lottozahln.lngth; ++) { lottozahln[] = (nt)(math.random()*49.0)+1; // Ausgab dr Zahln for (nt = 0; < lottozahln.lngth; ++) { Systm.out.prntln(lottozahln[]); todo: Zahln wrdn noch dopplt gzogn und snd n dr Ausgab ncht sortrt. Java und OOP Das Buch Chrstan Slbrbaur www.javaundoop.d 35
Funktonn publc class Fakultat { publc statc nt fakultat(nt x) { nt f = 1; // 2 for (nt = 2; <= x; ++) // 3 f = f * ; rturn f; // 4 publc statc vod man(strng[] args) { nt f = fakultat(5); // 1 Systm.out.prntln(f); // 5 Java und OOP Das Buch Chrstan Slbrbaur www.javaundoop.d 36
Rkursv Funktonn (Bspl) publc class FakultatRkursv { publc statc nt fakultat(nt x) { f (x <= 1) rturn 1; ls rturn x * fakultat(x - 1); publc statc vod man(strng[] args) { nt f = fakultat(5); Systm.out.prntln(f); Also: 5! = 5 * 4! Und 4! = 4 * 3! Und 3! = 3 * 2! Und 2! = 2 * 1! Und 1! = 1 Java und OOP Das Buch Chrstan Slbrbaur www.javaundoop.d 37
Funktonsstack (Bspl) fakultat(1) fakultat(2) fakultat(2) fakultat(3) fakultat(3) fakultat(3) fakultat(4) fakultat(4) fakultat(4) fakultat(4) fakultat(5) fakultat(5) fakultat(5) fakultat(5) fakultat(5) man() man() man() man() man() man() fakultat(2) fakultat(3) fakultat(3) fakultat(4) fakultat(4) fakultat(4) fakultat(5) fakultat(5) fakultat(5) fakultat(5) man() man() man() man() man() Java und OOP Das Buch Chrstan Slbrbaur www.javaundoop.d 38
Funktonsstack En Stack wrd auch Stapl odr Kllr gnannt st n Datnstruktur arbtt nach dm LIFO-Prnzp: Last-In- Frst-Out (dmggnübr arbtt n Quu nach dm FIFO-Prnzp) En Funktonsstack st n Stack, dssn Elmnt Funktonsnstanzn snd. Funktonsnstanzn bnhaltn Engabparamtr, lokal Varabln, Rücksprungadrss tc. (ncht d Implmntrung > ds st statsch!) Java und OOP Das Buch Chrstan Slbrbaur www.javaundoop.d 39
Rkursv Funktonn snd Funktonn, d sch (drkt odr ndrkt) slbst aufrufn. müssn wohlübrlgt Abbruchbdngungn bstzn (sonst Stackovrflow!) Rkursv Aufruf gschhn mmr mt abgwandltn Engabparamtrn (sonst Stackovrflow!) Jd Instanz löst slbst n glchartgs Tlproblm. Das Gsamtproblm nr Instanz nmmt mt zunhmndr Vrschachtlung ab. (2! st wngr komplx als 5!) Java und OOP Das Buch Chrstan Slbrbaur www.javaundoop.d 40
Excptons Zur Bhandlung von Ausnahmstuatonn m Programmablauf Bspl: Dr Zugrff auf n Dat klappt ncht. Altrnatv Prüfung mt f- Anwsungn btt kn lgant Syntax. Java und OOP Das Buch Chrstan Slbrbaur www.javaundoop.d 41
Bspl publc statc vod datvrarbtn() try { // Öffn Dat whl(/* Datnd ncht rrcht */) { // Ls Zl aus Dat // Schlß Dat catch (Excpton ) { Systm.out.prntln(); Java und OOP Das Buch Chrstan Slbrbaur www.javaundoop.d 42
Excptons wtrrchn (throws) publc statc vod datvrarbtn() throws Excpton // Öffn Dat whl (/* Datnd ncht rrcht */) { // Ls Zl aus Dat // Schlß Dat publc statc vod man(strng[] args) { try { datvrarbtn(); catch (Excpton ) { Systm.out.prntln(); Java und OOP Das Buch Chrstan Slbrbaur www.javaundoop.d 43