Η παρουσίαση φορτώνεται. Παρακαλείστε να περιμένετε

Η παρουσίαση φορτώνεται. Παρακαλείστε να περιμένετε

Εισαγωγή στον Προγραμματισμό, Αντώνιος Συμβώνης, ΣΕΜΦΕ, ΕΜΠ, Slide 1 Εβδομάδα 7: Συμβολοσειρές.

Παρόμοιες παρουσιάσεις


Παρουσίαση με θέμα: "Εισαγωγή στον Προγραμματισμό, Αντώνιος Συμβώνης, ΣΕΜΦΕ, ΕΜΠ, Slide 1 Εβδομάδα 7: Συμβολοσειρές."— Μεταγράφημα παρουσίασης:

1

2 Εισαγωγή στον Προγραμματισμό, Αντώνιος Συμβώνης, ΣΕΜΦΕ, ΕΜΠ, Slide 1 Εβδομάδα 7: Συμβολοσειρές

3 Εισαγωγή στον Προγραμματισμό, Αντώνιος Συμβώνης, ΣΕΜΦΕ, ΕΜΠ, Slide 2 Τιμές βασικών τύπων και αναφορές Δεδομένα βασικών τύπων αποθηκεύονται κατ’ αξία ενώ τα αντικείμενα αποθηκεύονται κατ΄αναφορά: age = 42; father = new Person(); name = "Fred"; 42 Person "Fred"

4 Εισαγωγή στον Προγραμματισμό, Αντώνιος Συμβώνης, ΣΕΜΦΕ, ΕΜΠ, Slide 3 Η εντολή καταχώρησης (για 3 η φορά) Η καταχώρηση γίνεται κατ’ αξία για τους βασικούς τύπους δεδομένων και κατ’ αναφορά για τύπους αντικειμένων age = 42; myAge = age; p1 = new Person(); p2 = p1; 42 Person 42 agemyAge p1 p2

5 Εισαγωγή στον Προγραμματισμό, Αντώνιος Συμβώνης, ΣΕΜΦΕ, ΕΜΠ, Slide 4 Ψευδωνυμία (Aliasing) Person p1 = new Person("Jack"); Person p2; p2 = p1; p2.changeName("Jill"); p1.printName(); Τι θα τυπωθεί;

6 Εισαγωγή στον Προγραμματισμό, Αντώνιος Συμβώνης, ΣΕΜΦΕ, ΕΜΠ, Slide 5 Ψευδωνυμία Person p1= new Person("Jack"); Person p2; p2 = p1; p2.changeName("Jill"); p1.printName(); "Jack" p1 p2 "Jill" Jill

7 Εισαγωγή στον Προγραμματισμό, Αντώνιος Συμβώνης, ΣΕΜΦΕ, ΕΜΠ, Slide 6 Βασικοί τύποι int i1 = 42; int i2; i2 = i1; i2++; System.out.println(i1); Τι θα τυπωθεί;

8 Εισαγωγή στον Προγραμματισμό, Αντώνιος Συμβώνης, ΣΕΜΦΕ, ΕΜΠ, Slide 7 Βασικοί τύποι int i1= 42; int i2; i2 = i1; i2++; System.out.println(i1); i1 i

9 Εισαγωγή στον Προγραμματισμό, Αντώνιος Συμβώνης, ΣΕΜΦΕ, ΕΜΠ, Slide 8 Ψευδωνυμία μέσω παραμέτρων Board board = new Board("Blocks"); GameEngine engine = new GameEngine(board); System.out.println(board.getTitle()); Τι θα τυπωθεί; public GameEngine(Board theBoard) { board = theBoard; theBoard.setTitle("My Game"); }

11 Εισαγωγή στον Προγραμματισμό, Αντώνιος Συμβώνης, ΣΕΜΦΕ, ΕΜΠ, Slide 10 Τι ισχύει για αντικείμενα τύπου String;

12 Εισαγωγή στον Προγραμματισμό, Αντώνιος Συμβώνης, ΣΕΜΦΕ, ΕΜΠ, Slide 11 Τα Strings δεν μπορεί να μεταλλαχθούν Τα Strings δεν μπορεί να μεταλλαχθούν [immutable] Τα αντικείμενα που δεν μπορεί να μεταλλαχθούν έχουν σταθερή κατάσταση; Η κατάστασή τους δεν μπορεί να μεταβληθεί.

13 Εισαγωγή στον Προγραμματισμό, Αντώνιος Συμβώνης, ΣΕΜΦΕ, ΕΜΠ, Slide 12 Βασικές μέθοδοι public int length(); public char charAt(int index); public indexOf(char ch); public indexOf(char ch, int start); public lastIndexOf(char ch); public lastIndexOf(char ch, int start); Οι πιο συχνά χρησιμοποιούμενες μέθοδοι είναι:

14 Εισαγωγή στον Προγραμματισμό, Αντώνιος Συμβώνης, ΣΕΜΦΕ, ΕΜΠ, Slide 13 Μεταβολή αντικειμένων τύπου String String s1, s2; s1 = "Fred"; s2 = s1; s2.toUpperCase(); System.out.println(s1); Fred ή FRED ? "Fred" String s1 s2

15 Εισαγωγή στον Προγραμματισμό, Αντώνιος Συμβώνης, ΣΕΜΦΕ, ΕΜΠ, Slide 14 Μεταβολή αντικειμένων τύπου String String s1, s2; s1 = "Fred"; s2 = s1; s2.toUpperCase(); System.out.println(s1); Fred ή FRED ? "Fred" String s1 s2 ΛΑΘΟΣ!

16 Εισαγωγή στον Προγραμματισμό, Αντώνιος Συμβώνης, ΣΕΜΦΕ, ΕΜΠ, Slide 15 Μεταβολή αντικειμένων τύπου String String s1, s2; s1 = "Fred"; s2 = s1; s2 = s2.toUpperCase(); System.out.println(s1); "Fred" String s1 s2 "FRED" String Τα αντικείμενα τύπου String δεν μπορεί να μεταβληθούν. Όλες οι «τροποποιήσεις» επιστρέφουν ένα νέο αντικείμενο τύπου String.

17 Εισαγωγή στον Προγραμματισμό, Αντώνιος Συμβώνης, ΣΕΜΦΕ, ΕΜΠ, Slide 16 «Τροποποίηση» των Strings  Αντικείμενα τύπου String δεν μπορεί ποτέ να τροποποιηθούν. Για μεγαλύτερη ακρίβεια, θα έπρεπε να αναφερόμαστε στη «δημιουργία συναφών Strings».

18 Εισαγωγή στον Προγραμματισμό, Αντώνιος Συμβώνης, ΣΕΜΦΕ, ΕΜΠ, Slide 17 Δημιουργία συναφών Strings String replace(char oldChar, char newChar); String toLowerCase(); String toUpperCase(); String trim();

19 Εισαγωγή στον Προγραμματισμό, Αντώνιος Συμβώνης, ΣΕΜΦΕ, ΕΜΠ, Slide 18 Ταύτιση σε αντιπαράθεση με ισότητα Για αντικείμενα τύπου διαφορετικού από String: person1 == person2 ? “Fred” Person person1person2 “Jill” Person

20 Εισαγωγή στον Προγραμματισμό, Αντώνιος Συμβώνης, ΣΕΜΦΕ, ΕΜΠ, Slide 19 Ταύτιση σε αντιπαράθεση με ισότητα Για αντικείμενα τύπου διαφορετικού από String: "Fred" Person person1person2 person1 == person2 ? "Fred" Person

21 Εισαγωγή στον Προγραμματισμό, Αντώνιος Συμβώνης, ΣΕΜΦΕ, ΕΜΠ, Slide 20 Ταύτιση σε αντιπαράθεση με ισότητα Για αντικείμενα τύπου διαφορετικού από String: person1person2 person1 == person2 ? "Fred" Person "Fred" Person

22 Εισαγωγή στον Προγραμματισμό, Αντώνιος Συμβώνης, ΣΕΜΦΕ, ΕΜΠ, Slide 21 Ταύτιση σε αντιπαράθεση με ισότητα για Strings "quit" String command command = "quit"; if(command == "quit") {... } "quit" String ==?  false == ελέγχει την ταύτιση

23 Εισαγωγή στον Προγραμματισμό, Αντώνιος Συμβώνης, ΣΕΜΦΕ, ΕΜΠ, Slide 22 Ταύτιση σε αντιπαράθεση με ισότητα για Strings "quit" String command command = "quit"; if(command.equals("quit")) {... } "quit" String equals?  true equals ελέγχει για ισότητα

24 Εισαγωγή στον Προγραμματισμό, Αντώνιος Συμβώνης, ΣΕΜΦΕ, ΕΜΠ, Slide 23 Μετατροπή από/σε String Συχνά είναι αναγκαία η μετατροπή ενός αντικειμένου τύπου String σε αντικείμενα άλλων τύπων (Integer, Boolean, …), και αντίστροφα. Ο τύπος-αποτέλεσμα της μετατροπής περιέχει την μέθοδο που θα κληθεί για να πραγματοποιήσει την μετατροπή. (Παράδειγμα: μετατροπή από String σε Integer μια μέθοδο στην κλάση Integer.)

25 Εισαγωγή στον Προγραμματισμό, Αντώνιος Συμβώνης, ΣΕΜΦΕ, ΕΜΠ, Slide 24 Μέθοδοι μετατροπής από/σε String Μετατροπή απόσε String booleanString.valueOf(boolean) intString.valueOf(int) longString.valueOf(long) floatString.valueOf(float) doubleString.valueOf(double) Μετατροπή σε από String booleannew Boolean(String).booleanValue() intInteger.parseInt(String, int base) longLong.ParseLong(String, int base) floatnew Float(String).floatValue() doublenew Double(String).doubleValue()

26 Εισαγωγή στον Προγραμματισμό, Αντώνιος Συμβώνης, ΣΕΜΦΕ, ΕΜΠ, Slide 25 Το πρόβλημα της συνεχούς μετατροπής name = title + " " + firstName + " " + lastName; "Mr Fred" "Mr " "Fred""Simpson""Mr" "Mr Fred " "Mr Fred Simpson" Η δημιουργία πολλών ενδιάμεσων αντικειμένων είναι αντιπαραγωγική

27 Εισαγωγή στον Προγραμματισμό, Αντώνιος Συμβώνης, ΣΕΜΦΕ, ΕΜΠ, Slide 26 Η κλάση StringBuffer name = new StringBuffer().append(title).append(" ").append(firstName).append(" ").append(lastName); Ο μεταφραστής χρησιμοποιεί ένα αντικείμενο τύπου StringBuffer για να λύσει το πρόβλημα. Έναν αντικείμενο τύπου StringBuffer αποθηκεύει ένα τροποποιήσιμο διάνυσμα από χαρακτήρες.

28 Εισαγωγή στον Προγραμματισμό, Αντώνιος Συμβώνης, ΣΕΜΦΕ, ΕΜΠ, Slide 27 Η κλάση StringBuffer Τροποποίηση του χώρου αποθήκευσης [buffer] : public void setCharAt(int index, char newChar) αλλάζει το χαρακτήρα στη θέση index StringBuffer append(String s) StringBuffer append(char ch) StringBuffer append(int i) StringBuffer append(boolean b)... (διαθέσιμη για όλους τους βασικούς τυπους)

29 Εισαγωγή στον Προγραμματισμό, Αντώνιος Συμβώνης, ΣΕΜΦΕ, ΕΜΠ, Slide 28 Η κλάση StringBuffer public String changeString(String s) { StringBuffer buffer = new StringBuffer(s); // modify StringBuffer... return buffer.toString(); } Αντικείμενα τύπου String μπορεί εύκολα να μετατραπούν σε αντικείμενα τύπου StringBuffers, και αντίστροφα.

30 Εισαγωγή στον Προγραμματισμό, Αντώνιος Συμβώνης, ΣΕΜΦΕ, ΕΜΠ, Slide 29 Η χωριτικότητα του StringBuffer public StringBuffer(int capacity); Δημιουργεί μια αποθήκη με αρχική χωρητικότητα capacity. public void ensureCapacity(int minimum); Επιβεβαιώνεται ότι η χωρητικότητα της αποθήκης είναι τουλάχιστον minimum. public int capacity(); Επιστρέφει τη χωρητικότητα της αποθήκης. ê Ενας StringBuffer είναι ένα μεταβλητού μεγέθους διάνυσμα από char. ê Παρόμοια αντιμετώπιση θεμάτων χωρητικότητας με τα διανύσματα μεταβλητού μεγέθους.

31 Εισαγωγή στον Προγραμματισμό, Αντώνιος Συμβώνης, ΣΕΜΦΕ, ΕΜΠ, Slide 30 Strings και διανύσματα από char Ένα String αναπαρίσταται με ένα διανυσμα από char s Ένα String μπορεί να μετατραπεί από/σε διάνυσμα από char s

32 Εισαγωγή στον Προγραμματισμό, Αντώνιος Συμβώνης, ΣΕΜΦΕ, ΕΜΠ, Slide 31 Παραδειγμα: διανυσμα από char s public static String squeezeOut(String from, char toss) { char[] chars = from.toCharArray(); int len = chars.length(); for (int i = 0; i < len; i++) { if (chars[i] == toss) { len--; System.arraycopy(chars, i+1, chars, i, len-i); i--; // reexamine this spot } return new String(chars, 0, len); }


Κατέβασμα ppt "Εισαγωγή στον Προγραμματισμό, Αντώνιος Συμβώνης, ΣΕΜΦΕ, ΕΜΠ, Slide 1 Εβδομάδα 7: Συμβολοσειρές."

Παρόμοιες παρουσιάσεις


Διαφημίσεις Google