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

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

Δρ. Μαρία Ι. Ανδρέου Εισαγωγή στον Αντικειμενόστρεφη Προγραμματισμό (Object-Oriented Programming) Strings.

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


Παρουσίαση με θέμα: "Δρ. Μαρία Ι. Ανδρέου Εισαγωγή στον Αντικειμενόστρεφη Προγραμματισμό (Object-Oriented Programming) Strings."— Μεταγράφημα παρουσίασης:

1 Δρ. Μαρία Ι. Ανδρέου Εισαγωγή στον Αντικειμενόστρεφη Προγραμματισμό (Object-Oriented Programming) Strings

2 Εισαγωγή στο ΟΟΡ και Java Δρ. Μαρία Ι. Ανδρέου1-2 Στόχοι: l Μαθαίνουμε για literal strings l Μαθαίνουμε για String constructors και commonly used methods l Κατανοούμε immutability of strings l Μαθαίνουμε να μετατρέπουμε convert strings σε αριθμούς και αριθμούς σε strings l μαθαίνουμε several useful methods της Character class

3 Εισαγωγή στο ΟΟΡ και Java Δρ. Μαρία Ι. Ανδρέου1-3 The String class l Ένα object της String class αναπαριστά string από characters. l Το String class ανήκει στο java.lang package, το οποίο κάνει built into Java. l Όπως και σε άλλες classes, String έχουν constructors και methods. l Σε διαφορά με other classes, String έχουν δυο operators, τους + και += (used for concatenation).

4 Εισαγωγή στο ΟΟΡ και Java Δρ. Μαρία Ι. Ανδρέου1-4 Literal Strings l Literal strings είναι anonymous constant objects του String class που ορίζονται σαν text in double quotes. l το string text μπορεί να περιλαμβάνει “escape” characters. Για παράδειγμα: \\ stands for \ \n stands for the newline character "Biology”, "C:\\jdk1.4\\docs”, "Hello\n"

5 Εισαγωγή στο ΟΟΡ και Java Δρ. Μαρία Ι. Ανδρέου1-5 Literal Strings (συνέχ.) l ΔΕΝ πρέπει να κατασκευαστούν: απλά υπάρχουν εκεί (they are “just there.”) l Μπορούν να ανατεθούν σε String variables. l can be passed to methods and constructors as arguments. l have methods you can call: String fileName = "fish.dat"; button = new JButton("Next slide"); if (”Start". equals(cmd))...

6 Εισαγωγή στο ΟΟΡ και Java Δρ. Μαρία Ι. Ανδρέου1-6 Immutability l Έτσι και δημιουργηθεί ένα string ΔΕΝ μπορεί να αλλάξει. ΚΑΜΙΑ από τις methods του δεν αλλάζει το string. l Τέτοιου τύπου objects ονομάζονται immutable. l Immutable objects μας εξυπηρετούν/διευκολίνουν (are convenient) επειδή two references can point to the same object με ασφάλεια. l Δεν υπάρχει κίνδυνος να αλλάξει το object through one reference χωρίς να το γνωρίζουν οι άλλες.

7 Εισαγωγή στο ΟΟΡ και Java Δρ. Μαρία Ι. Ανδρέου1-7 Immutability (συνέχ.) l Πλεονεκτήματα: ΠΙΟ αποδοτικά, δεν υπάρχει ανάγκη αντιγραφής. String s1 = "Sun"; String s2 = s1; String s1 = "Sun"; String s2 = new String(s1); s1 s2 "Sun" s1 s2 "Sun" OKLess efficient and wasteful

8 Εισαγωγή στο ΟΟΡ και Java Δρ. Μαρία Ι. Ανδρέου1-8 Immutability (συνέχ.) l Μειονέκτημα: ΛΙΓΟΤΕΡΟ αποδοτικό — πρέπει να δημιουργήσουμε ένα ΝΕΟ string και να πετάξουμε το παλιό σε κάθε μικρή αλλαγή. String s = "sun"; char ch = Character.toUpper(s.charAt (0)); s = ch + s.substring (1); s "sun" "un"'S' +

9 Εισαγωγή στο ΟΟΡ και Java Δρ. Μαρία Ι. Ανδρέου1-9 Empty Strings l ένα empty string ΔΕΝ έχει characters; Είναι of length 0. l ΜΗΝ το συγχύζεται με ένα ΜΗ αρχικοποιημένο string: String s1 = ""; String s2 = new String(); Empty strings private String errorMsg; errorMsg is null

10 Εισαγωγή στο ΟΟΡ και Java Δρ. Μαρία Ι. Ανδρέου1-10 Constructors l String’s no-args and copy constructors are not used much. l Other constructors convert arrays into strings String s1 = new String (); String s2 = new String (s1); String s1 = ""; String s2 = s1;

11 Εισαγωγή στο ΟΟΡ και Java Δρ. Μαρία Ι. Ανδρέου1-11 Methods — length, charAt int length (); char charAt (k); l Επιστρέφει τον αριθμό των characters μέσα στο string l Επιστρέφει τον k-th char 6 ’n' ”Flower".length(); ”Wind".charAt (2); Returns: Οι θέσεις των Character σε ένα strings αριθμούνται αρχίζοντας από το 0

12 Εισαγωγή στο ΟΟΡ και Java Δρ. Μαρία Ι. Ανδρέου1-12 Methods — substring String s2 = s.substring (i, k); –returns the substring of chars in positions from i to k-1 String s2 = s.substring (i); –returns the substring from the i-th char to the end ”raw" "happy" "" (empty string) ”strawberry".substring (2,5); "unhappy".substring (2); "emptiness".substring (9); Returns: strawberry i k

13 Εισαγωγή στο ΟΟΡ και Java Δρ. Μαρία Ι. Ανδρέου1-13 Methods — Concatenation String result = s1 + s2; –concatenates s1 and s2 String result = s1.concat (s2); –the same as s1 + s2 result += s3; –concatenates s3 to result result += num; –converts num to String and concatenates it to result

14 Εισαγωγή στο ΟΟΡ και Java Δρ. Μαρία Ι. Ανδρέου1-14 Methods — Find (indexOf) String date = "July 5, :28:19 PM" ; date.indexOf ('J'); 0 date.indexOf ('2'); 8 date.indexOf ("2012"); 8 date.indexOf ('2', 9); 11 date.indexOf ("2020"); -1 date.lastIndexOf ('2'); Returns: (not found) (starts searching at position 9)

15 Εισαγωγή στο ΟΟΡ και Java Δρ. Μαρία Ι. Ανδρέου1-15 Methods — Comparisons boolean b = s1.equals(s2); –returns true if the string s1 is equal to s2 boolean b = s1.equalsIgnoreCase(s2); –returns true if the string s1 matches s2, case- blind int diff = s1.compareTo(s2); –returns the “difference” s1 - s2 int diff = s1.compareToIgnoreCase(s2); –returns the “difference” s1 - s2, case-blind

16 Εισαγωγή στο ΟΟΡ και Java Δρ. Μαρία Ι. Ανδρέου1-16 Methods — Replacements String s2 = s1.trim (); –returns a new string formed from s1 by removing white space at both ends String s2 = s1.replace(oldCh, newCh); –returns a new string formed from s1 by replacing all occurrences of oldCh with newCh String s2 = s1.toUpperCase(); String s2 = s1.toLowerCase(); –returns a new string formed from s1 by converting its characters to upper (lower) case

17 Εισαγωγή στο ΟΟΡ και Java Δρ. Μαρία Ι. Ανδρέου1-17 Replacements (cont’d) l Example: how to convert s1 to upper case l A common bug: s1 = s1.toUpperCase(); s1.toUpperCase(); s1 remains unchanged

18 Εισαγωγή στο ΟΟΡ και Java Δρ. Μαρία Ι. Ανδρέου1-18 Methods — toString l It is customary to provide a toString method for your class. l toString converts an object into a String (for printing it out, for debugging, etc.). is the same as System.out.print (obj); System.out.print (obj.toString());

19 Εισαγωγή στο ΟΟΡ και Java Δρ. Μαρία Ι. Ανδρέου1-19 Numbers to Strings and Strings to Numbers l Integer and Double are “wrapper” classes from java.lang that represent numbers as objects. l Integer and Double provide useful static methods for conversions: String s1 = Integer.toString (i); String s2 = Double.toString (d); int n = Integer.parseInt (s1); double x = Double.parseDouble (s2); int i; double d;

20 Εισαγωγή στο ΟΟΡ και Java Δρ. Μαρία Ι. Ανδρέου1-20 Numbers to Strings l Three ways to convert a number into a string: 1. String s = "" + num; 2. String s = Integer.toString (i); String s = Double.toString (d); 3. String s = String.valueOf (num); int i; double d;

21 Εισαγωγή στο ΟΟΡ και Java Δρ. Μαρία Ι. Ανδρέου1-21 Numbers to Strings (cont’d) l The DecimalFormat class can be used for more controlled conversions of numbers into strings: import java.text.DecimalFormat;... DecimalFormat money = new DecimalFormat("0.00");... double amt = …;... String s = money.format (amt); "56.79"

22 Εισαγωγή στο ΟΟΡ και Java Δρ. Μαρία Ι. Ανδρέου1-22 Strings to Numbers l These methods throw a NumberFormatException if s does not represent a valid number. l Older versions of SDK (before 1.2) did not have Double.parseDouble; you had to use int n = Integer.parseInt(s); double x = Double.parseDouble(s); double x = Double.valueOf(s).doubleValue();

23 Εισαγωγή στο ΟΟΡ και Java Δρ. Μαρία Ι. Ανδρέου1-23 Character Methods l java.lang.Character is a class that represents characters as objects. l Character has several useful static methods that determine the type of a character. l Character also has methods that convert a letter to the upper or lower case.

24 Εισαγωγή στο ΟΟΡ και Java Δρ. Μαρία Ι. Ανδρέου1-24 Character Methods (cont’d) if (Character.isDigit (ch))....isLetter....isLetterOrDigit....isUpperCase....isLowerCase....isWhitespace... –return true if ch belongs to the corresponding category Whitespace is space, tab, newline, etc.

25 Εισαγωγή στο ΟΟΡ και Java Δρ. Μαρία Ι. Ανδρέου1-25 Character methods (cont’d) char ch2 = Character.toUpperCase (ch1);.toLowerCase (ch1); –if ch1 is a letter, returns its upper (lower) case; otherwise returns ch1 int d = Character.digit (ch, radix); –returns the int value of the digit ch in the given int radix char ch = Character.forDigit (d, radix); –returns a char that represents int d in a given int radix

26 Εισαγωγή στο ΟΟΡ και Java Δρ. Μαρία Ι. Ανδρέου1-26 StringTokenizer l java.util.StringTokenizer is used to extract “tokens” from a string. l Tokens are separated by delimiters (e.g., whitespace). l A tokenizer object is constructed with a given string as an argument. l The second optional argument is a string that lists all delimiters (default is whitespace).

27 Εισαγωγή στο ΟΟΡ και Java Δρ. Μαρία Ι. Ανδρέου1-27 StringTokenizer (cont’d) import java.util.StringTokenizer;... String str = input.readLine(); StringTokenizer q = new StringTokenizer (str); // or: // new StringTokenizer (str, ";+ \t, "); int n = q.countTokens (); while ( q.hasMoreTokens() ) { String word = q.nextToken();... Delimiters are whitespace The number of found tokens All delimiters

28 Εισαγωγή στο ΟΟΡ και Java Δρ. Μαρία Ι. Ανδρέου1-28 EquationSolver Applet

29 Εισαγωγή στο ΟΟΡ και Java Δρ. Μαρία Ι. Ανδρέου1-29 EquationSolver (cont’d) l Uses many techniques discussed earlier: –trim, substring, and other String methods clean the input, surround operation signs with spaces –StringTokenizer extracts tokens –Character.isDigit, and other Character methods identify tokens –Integer.parseInt converts tokens to numbers –String's + operator combines strings and numbers to generate output

30 Εισαγωγή στο ΟΟΡ και Java Δρ. Μαρία Ι. Ανδρέου1-30 Review: l What makes the String class unusual? l How can you include a double quote character into a literal string? l Is "length".length() allowed syntax? If so, what is the returned value? l Define immutable objects. l Does immutability of Strings make Java more efficient or less efficient?

31 Εισαγωγή στο ΟΟΡ και Java Δρ. Μαρία Ι. Ανδρέου1-31 Review (cont’d): l How do you declare an empty string? l Why are String constructors not used very often? l If the value of String city is "Boston", what is returned by city.charAt (2)? By city.substring (2, 4)? l How come String doesn’t have a setCharAt method? l Is s1 += s2 the same as s1 = s1 + s2 for strings?

32 Εισαγωγή στο ΟΟΡ και Java Δρ. Μαρία Ι. Ανδρέου1-32 Review (cont’d): l What do the indexOf methods do? Name a few overloaded versions. l What is more efficient for strings: == and other relational operators or equals and compareTo methods? l What does the trim method do? l What does s.toUpperCase() do to s? l What does the toString method return for a String object?

33 Εισαγωγή στο ΟΟΡ και Java Δρ. Μαρία Ι. Ανδρέου1-33 Review (cont’d): l Name a simple way to convert a number into a string. l Which class has a method for converting a String into an int? l Name a few Character methods that help identify the category to which a given character belongs. l What is the StringTokenizer class used for?


Κατέβασμα ppt "Δρ. Μαρία Ι. Ανδρέου Εισαγωγή στον Αντικειμενόστρεφη Προγραμματισμό (Object-Oriented Programming) Strings."

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


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