De presentatie wordt gedownload. Even geduld aub

De presentatie wordt gedownload. Even geduld aub

JAVA1 H 1. KENNISMAKING MET JAVA EN DE ONTWIKKELOMGEVINGEN 1. ONTSTAANSGESCHIEDENIS VAN JAVA Java: ontworpen in 1990 door Sun Microsystems voor de programmering.

Verwante presentaties


Presentatie over: "JAVA1 H 1. KENNISMAKING MET JAVA EN DE ONTWIKKELOMGEVINGEN 1. ONTSTAANSGESCHIEDENIS VAN JAVA Java: ontworpen in 1990 door Sun Microsystems voor de programmering."— Transcript van de presentatie:

1 JAVA1 H 1. KENNISMAKING MET JAVA EN DE ONTWIKKELOMGEVINGEN 1. ONTSTAANSGESCHIEDENIS VAN JAVA Java: ontworpen in 1990 door Sun Microsystems voor de programmering van electronische apparatuur. Voor 1995 had bijna niemand ervan gehoord.

2 JAVA2 H 1. KENNISMAKING MET JAVA EN DE ONTWIKKELOMGEVINGEN 1. ONTSTAANSGESCHIEDENIS VAN JAVA (vervolg) Java (OAK) is in 1990 ontworpen voor de programmering van allerlei intelligente elektronische gebruikersapparatuur. Elektronische apparatuur bevat chips. Een chip kan -> gegevens onthouden -> een reeks van instructies automatisch uitvoeren = programma Een programma wordt uitgevoerd door een andere chip, de processor. Probleem : begrijpt enkel zijn eigen specifieke machinecode! -> onleesbaar voor de mens (0 en 1)

3 JAVA3 H 1. KENNISMAKING MET JAVA EN DE ONTWIKKELOMGEVINGEN 1. ONTSTAANSGESCHIEDENIS VAN JAVA (vervolg) Oplossing: programma schrijven in een hogere programmeertaal (Cobol, Java, Pascal,…) -> een compiler (vertaler) zal het programma omzetten naar een specifieke machinecode Probleem: het programma is platformafhankelijk (= combinatie van een bepaald type processor met een bepaald besturingssysteem)

4 JAVA4 H 1. KENNISMAKING MET JAVA EN DE ONTWIKKELOMGEVINGEN 1. ONTSTAANSGESCHIEDENIS VAN JAVA (vervolg) Oplossing: Java 1. Elk Java-programma wordt door een compiler vertaald naar een soort TUSSENTAAL (=JAVA-bytecode), die betrekkelijk dicht tegen machinecode aanleunt. 2. De tussentaal wordt begrijpelijk gemaakt voor een specifieke processor, door deze van een programma te voorzien (=JAVA VIRTUAL MACHINE). Een JVM is een tamelijk klein programma (256 Kb), vermits het vertalen niet zo’n grote klus is.  JAVA is platformonafhankelijk!

5 JAVA5 2. ONTWERPDOELEN (1) JAVA is eenvoudiger dan C++ heeft een automatische garbage collection is klein is object georiënteerd is betrouwbaar

6 JAVA6 is veilig is architectuurneutraal is portable heeft een goede performance is multithreaded ONTWERPDOELEN (2)

7 JAVA7 3. APPLICATIE EN APPLET 3.1 Er bestaan twee soorten Java-programma’s: Applicatie: een applicatie is een Java-programma, cfr. programma’s in C++ (vb. Word, tekenprogramma,…) wordt bewaard en uitgevoerd op lokale PC uitvoerbaar mits JVM, geen webbrowser nodig kan bestanden op schijf maken, lezen en verwijderen

8 JAVA8 3. APPLICATIE EN APPLET 3.1 Er bestaan twee soorten Java-programma’s: Applet: maakt deel uit van een webpagina en zorgt voor de interactiviteit van de pagina -> wordt meestal bewaard op een PC op afstand uitvoerbaar mits webbrowser ( + JVM) of applet- viewer bijna geen bestandsverwerking of netwerktoepassingen mogelijk (werkt in een beveiligde omgeving)

9 JAVA9 3.2 APPLICATIE - voorbeeld import java.lang.*; public class Som extends Object { public static void main( String[] args) { int x = 2, y = 3, som; som = x * x + y * y; System.out.println("Som = "+ som); try { Thread.currentThread().sleep(5000); } catch (InterruptedException e) {}; }

10 JAVA10 UITVOERING APPLICATIE

11 JAVA11 3.3 APPLET - voorbeeld import java.applet.*; import java.awt.*; public class Applet1 extends Applet { private Font f = new Font(“TimesRoman”,Font.BOLD,36); public void paint(Graphics g) {g.setFont(f); g.setColor(Color.red); g.drawString(“Een bijzonder eenvoudige applet”,20,150); }

12 JAVA12 UITVOERING APPLET

13 JAVA13 Java-programma (Som.java) Compilatie Java byte-code (Som.class) Internet Java byte-code (Som.class) verwerking interpreter 2.4 DE 5 FASEN-APPLICATIE compiler verificatie Schematisch:

14 JAVA14 DE 5 FASEN-APPLICATIE 1.Met een editor het java-programma intypen en bewaren met extensie.java -> Som.java 2.Het programma compileren met het commando javac. Het resultaat is een file met extensie.class (= bytecode). -> javac Som.java geeft Som.class 3.Het programma (de.class-file) wordt geladen in het geheugen. 4.De bytecode wordt geverifieerd (belangrijk wanneer we klassen gebruiken van het net, die mogelijk virussen bevatten). 5. Het programma wordt uitgevoerd, door gebruik te maken van de Java-vertaler, via het commando java -> java Som

15 JAVA15 Computer die bezocht wordt Java-programma (Applet1.java) Compilatie Java byte-code (Applet1.class) Internet Schematisch: Java byte-code (Applet1.class) verwerking Browser omgeving interpreter Java virtuele machine verificatie Uw computer 2.5 DE 5 FASEN - APPLET compiler

16 JAVA16 DE 5 FASEN-APPLET 1.Met een editor de java-applet intypen en bewaren met extensie.java -> Applet1.java 2.De applet compileren met het commando javac. Het resultaat is een file met extensie.class (= bytecode). -> javac Applet1.java geeft Applet1.class 3.De applet (de class-file) bevindt zich normaal op een computer op afstand en gebruikers hebben er toegang tot via het World Wide Web. Een HTML-document verwijst naar een Java-applet (zie p.16) en deze wordt vervolgens gedownload op uw eigen PC. De applet wordt uit dezelfde directory gehaald als waar de HTML-file in zit.

17 JAVA17 DE 5 FASEN-APPLET 4.Voor de applet wordt uitgevoerd, wordt de bytecode geverifieerd op afwijkende code, gevaarlijke handelingen of virussen. 5.De applet wordt uitgevoerd, door de vertaler die in de browser ingebouwd moet zijn of vanaf de commando-lijn met de zgn. appletviewer = applet container: -> appletviewer Applet1.html De appletviewer is een minimale browser, die enkel de referentie naar de applet kan interpreteren ( - en -tag) en de rest van het HTML-document negeert!

18 JAVA18 Eerste voorbeeld <APPLET CODE= “Applet1.class” WIDTH=426 HEIGHT=266> HTML-CODE : Applet1.html

19 JAVA19 3.6 HET JAVA PLATFORM Java API Applet1.class Java Virtual Machine Operating system + Hardware

20 JAVA20 4. WAT HEB JE NODIG ? een editor, bijv. Notepad of Wordpad een compiler een JVM een browser of applet-viewer = JAVA DEVELOPMENT KIT (JDK) of JAVA 2 Software Development Kit (Java 2 SDK) (www.sun.com)(www.sun.com) Sinds 1995 zijn er verschillende versies van JDK verschenen: versie 1.0, versie 1.1, versie 1.2, versie 1.3, versie 1.4 Elke versie kan weer subversies hebben. De versies vanaf versie 1.2 worden ook aangeduid met het Java 2 platform. Bouwen we een volledige omgeving rond de programmeertaal, zodat de ontwikkelingstijd nodig voor het schrijven van een programma sterk wordt gereduceerd, dan verkrijgen we een zogenaamde geïntegreerde ontwikkelomgeving (IDE): Jbuilder 3 (www.borland.com), Forte (www.sun.com),www.borland.comwww.sun.com Visual Cafe 3 van Symantec, ….

21 JAVA21 H. 2 : KENNISMAKING MET DE ONTWIKKELOMGEVING VISUAL CAFE componentenpalet (Component Tool Palette) ontwerpscherm (Form Designer) projectvenster (Project Window) broncode-editor (Source Editor) eigenschappenlijst (Property List) Applet-viewer 1. Enkele veelgebruikte onderdelen van visual cafe :

22 JAVA22 2. Een eerste applet maken import java.awt.*; import java.applet.*; public class WelkomApplet extends Applet {public void init() {setLayout(null); setSize(426,266); bt_Welkom = new java.awt.Button(); bt_Welkom.setLabel("Spreek!"); bt_Welkom.setBounds(72,60,191,61); bt_Welkom.setBackground(new Color(12632256)); add(bt_Welkom);

23 JAVA23 lbl_Welkom = new java.awt.Label(" "); lbl_Welkom.setBounds(72,132,190,48); add(lbl_Welkom); SymMouse aSymMouse = new SymMouse(); bt_Welkom.addMouseListener(aSymMouse); } java.awt.Button bt_Welkom; java.awt.Label lbl_Welkom; 2. Een eerste applet maken (vervolg)

24 JAVA24 class SymMouse extends java.awt.event.MouseAdapter { public void mouseClicked(java.awt.event.MouseEvent event) {Object object = event.getSource(); if (object == bt_Welkom) btWelkom_MouseClick(event); } void btWelkom_MouseClick(java.awt.event.MouseEvent event) {lbl_Welkom.setText("Welkom bij Visual Café!"); } 2. Een eerste applet maken (vervolg)

25 JAVA25 2. Een eerste applet maken (vervolg)

26 JAVA26 H. 3 DE EERSTE APPLETS 1. De eerste applet import java.applet.*; import java.awt.*; public class Applet1 extends Applet { private Font f = new Font(“TimesRoman”,Font.BOLD,36); public void paint(Graphics g) {g.setFont(f); g.setColor(Color.red); g.drawString(“Een bijzonder eenvoudige applet”,20,150); }

27 JAVA27 H. 3 DE EERSTE APPLETS 2. De ingrediënten van de applet subklasse van de standaardklasse Applet moet zich houden aan een aantal veiligheidsristricties geen main()-methode of ander beginpunt wordt uitgevoerd door een browser of applet-viewer moet public gedeclareerd zijn

28 JAVA28 levensverloop van een applet : creatie van een instantie d.m.v. de constructor Applet() de applet wordt geïnitialiseerd door de functie init() de applet wordt gestart door de functie start() de methode paint() wordt automatisch uitgevoerd de applet wordt indien nodig hertekend door repaint() bij het stopzetten, wordt de functie stop() aangeroepen het applet-object wordt vernietigd door de functie destroy() 2. De ingrediënten van de applet (vervolg)

29 JAVA29 2. De ingrediënten van de applet (vervolg) kleine letters, hoofdletters, cijfers, de underscore en het dollarteken willekeurige lengte betekenisvolle namen nooit beginnen met een cijfer! namen van klassen beginnen ALTIJD met een hoofdletter Regels voor namen in Java :

30 JAVA30 2. De ingrediënten van de applet (vervolg) namen van objecten en functies beginnen ALTIJD met een kleine letter bestaat een naam van een object of een functie uit meer dan 1 woord, dan begint het eerste woord met een kleine letter en het volgende woord met een hoofdletter vbn. nieuwSaldo, percentageEersteSchijf

31 JAVA31 3. Tekenen met JAVA (1) public class Applet2 extends Applet {public void init() { setBackground( Color.yellow ); } public void paint( Graphics g ) { // een driehoek in het blauw g.setColor( Color.blue ); g.drawLine(0,0,100,200); g.drawLine(100,200,0,200); g.drawLine(0,200,0,0);

32 JAVA32 3. Tekenen met JAVA (2) //een rechthoek van 100 breed bij 50 hoog op positie (260,10) g.setColor(Color.green); g.drawRect(260,10,100,50); // een ellips van 100 bij 50 op positie (260,80) in het wit g.setColor(Color.white); g.drawOval(260,80,100,50); // een gevulde rechthoek en ellips in het paars g.setColor(Color.magenta); g.fillRect(130,10,100,50); g.fillOval(130,80,100,50);

33 JAVA33 3. Tekenen met JAVA (3) // een rechthoek met afgeronde hoeken in het rood g.setColor(Color.red); g.drawRoundRect(130,150,100,70,40,40); //ook fillRoundRect(); // een boog en een taartpunt (= gevulde boog) in het grijs g.setColor(Color.gray); g.drawArc(230,200,188,100,15,75); g.fillArc(260,200,60,40,15,75); }

34 JAVA34 4. Events Schematisch: Event Event-object Event-afhandeling De methode Action ActionEvent actionPerformed(ActionEvent e)

35 JAVA35 4. Events - VOORBEELD 1 (1) import java.awt.*; import java.applet.Applet; import java.awt.event.*; public class Schuifbalk extends Applet implements AdjustmentListener {private Scrollbar slider; private int sliderValue = 0; public void init() { slider = new Scrollbar(Scrollbar.HORIZONTAL,0,1,0,100); add(slider); slider.addAdjustmentListener(this); }

36 JAVA36 4. Events - VOORBEELD 1 (2) public void paint(Graphics g) { g.drawString(“Current value is “ + sliderValue,100,100); } public void adjustmentValueChanged (AdjustmentEvent e) { sliderValue = slider.getValue(); // haalt de momentele waarde van de schuifbalk op repaint(); // paint() wordt terug aangeroepen }

37 JAVA37 4. Events - VOORBEELD 2 (1) public class Safe extends Applet implements ActionListener {private int guess = 0, combination = 321; private Button btnOne, btnTwo, btnThree, btnAgain; public void init() {btnOne = new Button(“1”); add(btnOne); btnOne.addActionListener(this); btnTwo = new Button(“2”); add(btnTwo); btnTwo.addActionListener(this); btnThree = new Button(“3”); add(btnThree); btnThree.addActionListener(this); btnAgain = new Button(“Try again”); add(btnAgain); btnAgain.addActionListener(this); }

38 JAVA38 4. Events - VOORBEELD 2 (2) public void paint(Graphics g) {if (guess == combination) g.drawString(“Unlocked”,50,50); elseg.drawString(“Locked”,50,50); } public void actionPerformed (ActionEvent event) {if (event.getSource() == btnOne) guess = guess*10 + 1; else if (event.getSource() == btnTwo) guess = guess*10 + 2; elseif (event.getSource() == btnThree) guess = guess*10 + 3; elseif (event.getSource() == btnAgain) guess = 0; repaint(); }

39 JAVA39 4. Events : VOORBEELD 3 - UITVOER

40 JAVA40 4. Events : VOORBEELD 4 Werken met Applet-parameters: protected Color getColorParameter(String name) { String value = this.getParameter(name); try { return new Color(Integer.parseInt(value, 16)); } catch (Exception e) { return null; } } // Return information suitable for display in an About dialog box. public String getAppletInfo() { return "ColorScribble v.1. Written by A.& S."; }

41 JAVA41 4. Events : VOORBEELD 4 (vervolg) // Return info about the supported parameters. Web browsers and // appletviewers should display this information, and may also // allow users to set the parameter values. public String[][] getParameterInfo() { return info; } // Here's the information that getParameterInfo() returns. // It is an array of arrays of strings describing each parameter. // Format: parameter name, parameter type, parameter description private String[][] info = { {"foreground", "hexadecimal color value", "foreground color"}, {"background", "hexadecimal color value", "background color"} }

42 JAVA42 4.3 JAR- files samenvoegen van verschillende files tot 1 JAR-file (1.1) snelle transportatie over het net (gecompresseerde file) ARCHIVE-attribuut van de -tag gebruiken: <APPLET code = "voorbeelden.applet.ColorScribble.class” ARCHIVE = "Scribbleapplet.jar" width = 400 height = 400> het ARCHIVE-attribuut vervangt het CODE-attribuut niet!

43 JAVA43 H.4 : ENKELE GRONDBEGINSELEN VAN JAVA 1. Variabelen en constanten 3 soorten : instantievar., klassevar., lokale variabelen variabelen, die naar een object verwijzen = REFERENTIES Voorbeeld: Font f; // = null, als f een member is f = new Font(“TimesRoman”,Font.BOLD,20); variabelen van een primitief type (GEEN objecten) byteboolean1b charshort2b intfloat4b doublelong8b

44 JAVA44 1.1 Referentietypen een toekenningsopdracht = een wijzertoekenning (b2 = b1;) > OPL = een methode toevoegen aan de klasse, die een > diepe kopie maakt (b2 = b1.kopie();) een vergelijking = een wijzervergelijking ( if (b2 == b1)...) > OPL1 = de methode equals uit de moederklasse Object > overridden ( if (b1.equals(b2))... ) > OPL2 = een methode uitwerken voor waardevergelijking in > de betreffende klasse ( if (b1.isGelijk(b2))... )

45 JAVA45 1.2 Primitieve typen 1.2.1 int en Integer geen controle op de grenzen (cirkel) dezelfde rekenkundige operatoren als in C++ Integer = verpakkingsklasse (java.lang) > 1 member, een int, die niet wijzigbaar is (private) > 2 constanten : MAX_VALUE en MIN_VALUE > nuttige functies: Integer obj = new Integer(3); // of new Integer(“3”); int i = obj.intValue(); // terug uitpakken // invoer van een getal: String s = txtInvoer.getText(); int j = Integer.parseInt(s); // static functie!

46 JAVA46 1.2.1 int en Integer (2) // uitvoer van een getal in een tekstvak: txtUitvoer.setText(Integer.toString(j)); // of txtUitvoer.setText(String.valueOf(j)); // uitvoer naar het grafische scherm van j: g.drawString (“Het resultaat is “ + j,10,10); // uitvoer naar het scherm van een object van de klasse Datum: g.drawString(“Vandaag is het “ + vandaag); // mits in de klasse Datum de volgende functie staat: public String toString() { return dag + “/” + maand + “/” + jaar; }

47 JAVA47 1.2.2 double en Double een constante van de vorm 3.5 is een double delen door 0 is toegelaten -> Infinity geen automatische conversie van een hoger naar een lager type : float f = 10.3; geeft een compilatiefout > OPL = suffix f gebruiken: 10.3f alle operatoren voor integers kunnen hier ook gebruikt worden // invoer van een getal: String s = txtInvoer.getText(); Double hulp = Double.valueOf(s); // static functie! double getal = hulp.doubleValue(); // of double getal = Double.parseDouble(s); // JDK 1.2!!!

48 JAVA48 2. Constanten Karakterconstanten  tussen apostrofs: char ch = ‘A’;  UNICODE - 16 bits: \udddd = Unicode-teken, bevat bijna alle bestaande alfabetten van moderne talen (cultuuronafh.)  escape codes, bv. \u000A = ‘\n’ Boole-constanten : true en false String-constanten = OBJECT van de klasse String (geen array) Numerieke constanten  final int AANTAL = 5;  constanten in een klasse static declareren (vb. Math.PI)

49 JAVA49 3. Herhalingen relationele operatoren:, >=, ==, != logische operatoren: &&, ||, ! Alle logische expressies MOETEN true of false opleveren!!! NIET : if (i).... ; while (logische expressie) statement do statement while (logische expressie); for (init-expr.;log. expr.;incr. expr.) statement een break- of een continue-statement in een lus komma-operator

50 JAVA50 4. Beslissingen if (logische expressie) statement if (logische expressie) statement1 else statement2 switch-statement (VERGEET de break niet na elke case!) switch (discrete var.) { case waarde1: statement1 break; case waarde2: statement2 break; default: statement break; } conditionele expressie : x = 3 * (a > b? a : b ) + 100;

51 JAVA51 Conversie Promotie en casting: impliciete conversie int a= 10; double b = 10.2; b += a; expliciete conversie int i = (int) 3.14;

52 JAVA52 SPECIFICATIE VAN EEN KLASSE (eventueel) public (eventueel) final (eventueel) abstract class (eventueel) extends (eventueel) implements { }

53 JAVA53 VOORBEELD - HAPPER - UITVOER

54 JAVA54 5. Arrays 5.1 Declaratie en initialisatie Arrays in Java zijn objecten! Bevat waarden van een elementair type of een object int[] a; a= new int[10]; OF int a[]; a= new int[10]; OF int[] a = new int [10];

55 JAVA55 Een rij van objecten van de klasse Punt: Punt [] r; r = new Punt[10]; // r is een referentie naar een rij van 10 referenties, die = null for (int i = 0;i < 10;i++) r[i] = new Punt(i+1,i+2); 5.1 Declaratie en initialisatie (vervolg)

56 JAVA56 5.1 Declaratie en initialisatie (vervolg) a en r zijn referenties naar een array met 10 elementen Default-initialisatie op 0 en op null De lengte hoeft geen constante te zijn, doch de waarde moet op voorhand gekend zijn: double[] b; int n; //toekennen van een waarde aan n b = new double[n];

57 JAVA57 5.1 Declaratie en initialisatie (vervolg) length: public attribuut dat de lengte weergeeft b.length (kan niet meer gewijzigd worden) Declaratie en initialisatie kan gelijktijdig: String[] s= {’’ Jan ’’, ’’Stijn ’’, ’’Steven ’’} Automatische controle op de lengte (vs. C++)

58 JAVA58 5. 1 Voorbeeld : veelhoekapplet public class VeelhoekApplet extends Applet {private Polygon pijl, pijl2; private int[] xRij = { 50, 100, 100, 150, 100, 100, 50, 50 }; private int[] yRij = { 100, 100, 60, 125, 190, 150, 150, 100 }; private final int AANTALPUNTEN = xRij.length; public void init() {pijl = new Polygon( xRij, yRij, AANTALPUNTEN ); for( int i = 0; i < AANTALPUNTEN; i++ ) xRij[ i ] += 150; pijl2 = new Polygon( xRij, yRij, AANTALPUNTEN ); } public void paint( Graphics g ) {g.drawPolygon( pijl ); g.setColor( Color.blue ); g.fillPolygon( pijl2 ); }

59 JAVA59 5.2 Het referentiekarakter van een array Referentiekarakter bij toekenning Stel: int[] a = new int[10], b; a[1] = 1; b = a;// a en b wijzen naar dezelfdearray! b[1] = 10; a[2] = 20; Om in b enkel dezelfde waarden te hebben: kopiëren!! For-lus Arraycopy-methode van de klasse System

60 JAVA60 5.2 Het referentiekarakter van een array Opgelet : eerst een creatie met new voor b Referentiekarakter bij vergelijking functie equals() uit de moederklasse overridden zelf een functie ontwerpen

61 JAVA61 5.3 Een array als argument van een methode Uitvoer StaafdiagramApplet:

62 JAVA62 Argumenten van een methode Algemeen: Objecten: steeds BY REFERENCE Primitieve types: steeds BY VALUE Gevolg: int i = 5, j = 7; verwissel (i, j) ;// dit gaat niet! Oplossing: Eigen wrapperklasse maken

63 JAVA63 Eigen wrapperklasse (1) public class IntObj { public static void main (String[] args) { MijnInt i = new MijnInt(5), j = new MijnInt(7) ; verwissel(i, j) ; System.out.println("Na verwisseling is : ") ; System.out.println("i = " + i.x) ; System.out.println("j = "+ j.x) ; } static void verwissel( MijnInt a, MijnInt b) {int h = a.getX() ; a.setX(b.getX()) ; b.setX(h); } }

64 JAVA64 Eigen wrapperklasse (2) class MijnInt { private int x ; MijnInt( int i) { x = i ; } int getX() { return x;} void setX(int n) { x = n;} }

65 JAVA65 Array als terugkeerwaarde van een methode int [] f() { int [] a = new int [10];..... return a; }

66 JAVA66 5.4 Tweedimensionale arrays int [ ] [ ] sales = new int [4] [7] ; String [ ] [ ] schaakbord = new String [8] [8 ] ; sales [3] [2] = 99; schaakbord [2] [7] = "paard"; // geen new nodig! int [ ] [ ] tabel = {{1, 0}, {0, 1, 0}} ; int aantalRijen = tabel.length ; int aantalKolRij0 = tabel[0].length ; // de lengte van rij 0 // tabel[0] refereert naar de eerste rij

67 JAVA67 6. Klasse String en StringBuffer 6.1 Declaratie en initialisatie Strings zijn objecten! Doch new is overbodig! Voorbeeld: String tekst; tekst = “Jan”; Concatenatie: + of zelfs += (impliciete aanroep van concat()) concat-methode: public String concat(String str)

68 JAVA68 6.2 Conversie van een getal naar een string Conversie van een getal naar een String Via lege string: s= “” + 123; Via static-methode valueOf() uit de String klasse int i = 321; String is = String.valueOf(i); double x = 3.14; String sx = String.valueOf(x); Opm: lengte van een string te bepalen via methode length(): int i = sx.length(); // GEEN static-methode!

69 JAVA69 6.3 Strings en referenties String-objecten gecre ë erd via new en constructor zijn ECHTE referenties naar objecten: String s1= new String( “ Klaar! ” ), s2= new String ( “ Klaar! ” ); s1 s2 De test s1.equals(s2) levert true op! De test s1 == s2 levert false op! Klaar!

70 JAVA70 6.3 Strings en referenties (vervolg) String ‘ variabelen ’ gecre ë erd zonder new, komen terecht in een pool van strings: String s1=“Klaar!”, s2=“Klaar!”; JAVA springt zuinig om met String-objecten! Nu blijken s1 en s2 ook gelijk te zijn! s1,s2 °”Klaar !” °”Daag” °”Jan”

71 JAVA71 6.3 Strings en referenties (vervolg) Het statement s2 = “ Niet klaar! ” ; zorgt ervoor dat in beide gevallen s2 gaat wijzen naar een andere string! Besluit: een string is niet-modificeerbaar (=constante)  bij elke aanroep van een string-methode of string- operatie wordt een nieuwe string aangemaakt (de oude is afval) of wordt gebruik gemaakt van de klasse StringBuffer (bevat methoden om strings te wijzigen)!! Voorbeelden: s = s.replace( ‘ f ’, ’ p ’ ); // NIET : s.replace( ‘ f ’, ’ p ’ ); s = s.toUpperCase();

72 JAVA72 6.3 Strings en referenties (vervolg) String uit = “ TIN ” + 3 + ‘ A ‘ ; met uitsluitend stringmethoden: String uit = “ TIN ”.concat(String.valueOf(3)).concat(String.valueOf( ‘ A ’ )); Wanneer voor elk tussenresultaat een nieuwe string wordt aangemaakt, zou de compiler erg zorgeloos met geheugen omspringen -> de klasse StringBuffer: String uit = new StringBuffer().append( “ TIN ” ). append(3).append( ‘ A ’ ).toString();

73 JAVA73 Klasse String : nuttige functies char charAt (int index); // om een karakter uit de string // te halen; de notatie str[i] bestaat niet in Java! int length(); // lengte = logische lengte String replace (char c1, char c2); String substring (int beginIndex); String substring (int beginIndex,int eindIndex); String toLowerCase(); String toUpperCase(); Enz...

74 JAVA74 Klasse StringBuffer : nuttige functies 3 constructoren: StringBuffer() : cap.=16 karakters ( = fysische lengte), length = 0 StringBuffer(l): cap. = l karakters, length = 0 StringBuffer(String) : cap. = length = lengte van de string append(...) : toevoegen van een double, float, boolean, char, int, long, Object, char[] of een String aan een StringBuffer insert(...,...) : toevoegen op een bepaalde index = eerste argument, tweede argument = toevoegsel setCharAt(int i, char c) : vervangen van het karakter op positie i door char c met i >= 0 en i < length setLength(int) : de logische lengte wijzigen

75 JAVA75 VOORBEELD - ReverseString public class ReverseString { // st2 = reverse(st1); public static String reverse (String source) { int len = source.length(); StringBuffer dest = new StringBuffer(len); for (int i = len - 1;i >= 0;i--) dest.append(source.charAt(i)); return dest.toString(); } public static void main(String[] args) { System.out.println(reverse(“JAVA”)); } }

76 JAVA76 OEFENING 1 op strings Maak een applicatie, die werkt met invoer via de programmaparameters: een string en een cijfer (tussen 1 en 4). Voer de volgende testen uit op de parameters in de static functie test():  het aantal parameters moet twee zijn  de tweede parameter moet een cijfer zijn  de tweede parameter moet gelegen zijn tussen 1 en 4 Afhankelijk van de tweede parameter moet de volgende bewerking uitgevoerd worden op de string: Zet alle kleine letters in de string om in hoofdletters (1). Zet de beginletter van de string om in een hoofdletter (2). Tel het aantal klinkers in het woord (3). Ga na of de string een palindroom is (4). Schrijf voor elk van de volgende functionaliteiten een aparte functie en druk het resultaat telkens in main() af.

77 JAVA77 OEFENING 2 : BOODSCHAPPENLIJST (1) TOEVOEGEN VERWIJDEREN ACHTERAAN VOORAAN LEEGMAKEN Appels Peren Rijst Brood List-component

78 JAVA78 OEFENING 4 : BOODSCHAPPENLIJST (2) Belangrijkste functies op een List-component l: l.clear(); int tel = l.countItems(); int n = l.getSelectedIndex(); // n = 0,... String s = l.getSelectedItem(); l.delItem(n); l.addItem(s); // achteraan toevoegen l.addItem(s,0); // vooraan toevoegen


Download ppt "JAVA1 H 1. KENNISMAKING MET JAVA EN DE ONTWIKKELOMGEVINGEN 1. ONTSTAANSGESCHIEDENIS VAN JAVA Java: ontworpen in 1990 door Sun Microsystems voor de programmering."

Verwante presentaties


Ads door Google