java:string

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Next revision
Previous revision
Next revision Both sides next revision
java:string [2016/02/26 14:12]
gthanos created
java:string [2020/02/21 12:36]
gthanos [Η κλάση StringBuffer]
Line 3: Line 3:
 Τα αλφαριθμητικά στην Java υλοποιούνται μέσω της κλάσης [[https://docs.oracle.com/javase/7/docs/api/java/lang/String.html|java.lang.String]]. Κάθε αλφαριθμητικό στην Java είναι ένα αντικείμενο της κλάσης String το οποίο δεν μπορεί να μεταβληθεί μετά την δημιουργία του(//immutable//).  Τα αλφαριθμητικά στην Java υλοποιούνται μέσω της κλάσης [[https://docs.oracle.com/javase/7/docs/api/java/lang/String.html|java.lang.String]]. Κάθε αλφαριθμητικό στην Java είναι ένα αντικείμενο της κλάσης String το οποίο δεν μπορεί να μεταβληθεί μετά την δημιουργία του(//immutable//). 
  
-Σε μία μεταβλητή τύπου String μπορείτε να αναθέσετε απευθείας ένα String ως εξής:+Σε μία μεταβλητή τύπου String μπορείτε να αναθέσετε απευθείας ένα αλφαριθμητικό δηλώνοντας το μέσα σε διπλά εισαγωγικά. 
 <code java> <code java>
 String str = "Hello  World!"; String str = "Hello  World!";
 </code> </code>
  
-Εναλλακτικά μπορείτε να χρησιμοποιήσετε έναν από τους διαθέσιμους κατασκευαστές της κλάσης για να παράγεται ένα String. Για παράδειγμα μπορείτε να παράγετε String από ένα πίνακα χαρακτήρων ως εξής:+Εάν θέλετε να εισάγεται τον χαρακτήρα '"' μέσα στο αλφαριθμητικό σας θα πρέπει να τον αντικαταστήσετε με τον χαρακτήρα '\"', όπως παρακάτω:
  
 <code java> <code java>
-Char [] charSequence = { 'H','e','l','l','o',' ','W','o','r','l','d','!' }; +String str "Her dog is named \"Lili\"";
-String str1 new String(charSequence); +
-String str2 = new String(charSequence, 0, 5); +
-String str3 = new String(charSequnce, 6, 5);+
 </code> </code>
  
-Οι τελευταίες δύο γραμμές παράγουν τα αλφαριθμητικά ''Hello'' και ''World''.+Εναλλακτικά μπορείτε να χρησιμοποιήσετε έναν από τους διαθέσιμους κατασκευαστές της κλάσης για να παράγεται ένα String. Για παράδειγμα μπορείτε να παράγετε String από ένα πίνακα χαρακτήρων ως εξής: 
 + 
 +<code java StringExample.java> 
 +public class StringExample { 
 +  public static  void main(String [] args) { 
 +    char [] charSequence = { 'H','e','l','l','o',' ','W','o','r','l','d','!' }; 
 +    String str1 = new String(charSequence); 
 +    String str2 = new String(charSequence, 0, 5);  // Hello 
 +    String str3 = new String(charSequence, 6, 5);  // World 
 +    System.out.println("str1: " + str1); 
 +    System.out.println("str2: " + str2); 
 +    System.out.println("str3: " + str3); 
 +  } 
 +
 +</code> 
 + 
 +Οι τελευταίες δύο γραμμές εκτυπώνουν τα αλφαριθμητικά ''Hello'' και ''World''.
  
 Δύο ή αλφαριθμητικά μπορούν να συνεννοηθούν παράγοντας ένα νέο αλφαριθμητικό. Για την συνένωση δύο αλφαριθμητικών μπορείτε να χρησιμοποιήσετε τη μέθοδο concat() ή τον τελεστή ''+'', όπως παρακάτω: Δύο ή αλφαριθμητικά μπορούν να συνεννοηθούν παράγοντας ένα νέο αλφαριθμητικό. Για την συνένωση δύο αλφαριθμητικών μπορείτε να χρησιμοποιήσετε τη μέθοδο concat() ή τον τελεστή ''+'', όπως παρακάτω:
  
-<code java> +<code java StringExample.java> 
-String str1 = "Hello ".concat("World!"); +public class StringExample { 
-String str2 = "Hello " + "World!";  +  public static  void main(String [] args) { 
 +    String str1 = "Hello ".concat("World!"); 
 +    String str2 = "Hello " + "World!";   
 +    System.out.println("str1: " + str1); 
 +    System.out.println("str2: " + str2); 
 +  } 
 +}
 </code> </code>
  
 Κάθε αλφαριθμητικό διαθέτει συγκεκριμένο μήκος χαρακτήρων που δίνεται από την μέθοδο //length()//, όπως παρακάτω Κάθε αλφαριθμητικό διαθέτει συγκεκριμένο μήκος χαρακτήρων που δίνεται από την μέθοδο //length()//, όπως παρακάτω
-<code java> +<code java StringExample.java> 
-String str = "Hello World!"; +public class StringExample { 
-int strLength = str.length(); +  public static  void main(String [] args) { 
-System.out.println("String length is "+strLength);+    String str = "Hello World!"; 
 +    int strLength = str.length(); 
 +    System.out.println("String length is "+strLength); 
 +  } 
 +}
 </code> </code>
  
-Τέλος μπορείτε να δημιουργήσετε μορφοποιημένα Strings μέσω της μεθόδου //format()// (ανάλογη της printf()// όπως παρακάτω. +Τέλος μπορείτε να δημιουργήσετε μορφοποιημένα Strings μέσω της μεθόδου //format()// (ανάλογη της printf() στη C) όπως παρακάτω. 
-<code> + 
-String fs = String.format("The value of the float variable is " + +<code java StringExample.java
-                         "%f, while the value of the integer " + +public class StringExample { 
-                         "variable is %d, and the string " + +  public static  void main(String [] args) { 
-                         "is %s", floatVar, intVar, stringVar); +    float floatVar = 5.333F;  // if you miss the F at the end you get an error about possible loss of precision. 
-System.out.println(fs);+    int intVar = 100; 
 +    String stringVar = "Python"; 
 +    String fs = String.format("The value of the float variable is " + 
 +                              "%f, while the value of the integer " + 
 +                              "variable is %d, and the string " + 
 +                              "is \"%s\"", floatVar, intVar, stringVar); 
 +    System.out.println(fs); 
 +  } 
 +}
 </code> </code>
 +
 +===== Οι κλάσεις StringBuilder και StringBuffer =====
 +
 +Για την κλάση String αναφέραμε ότι τα αλφαριθμητικά που ανήκουν σε αυτή δεν μεταβάλλονται. Εάν θέλετε να προσθέσετε ή να αφαιρέσετε περιεχόμενο από ένα αλφαριθμητικό, χωρίς απαραίτητα να δημιουργήσετε νέο αντικείμενο μπορείτε να χρησιμοποιήσετε τις κλάσεις [[https://docs.oracle.com/javase/7/docs/api/java/lang/StringBuilder.html|java.lang.StringBuilder]] και [[https://docs.oracle.com/javase/7/docs/api/java/lang/StringBuffer.html|java.lang.StringBuffer]]. Βασικό χαρακτηριστικό των παραπάνω κλάσεων είναι η ύπαρξη μεθόδων για την μεταβολή του αλφαριθμητικού όπως:
 +  * **append:** προσθήκη χαρακτήρων στο τέλος του αλφαριθμητικού.
 +  * **insert:** προσθήκη ενός αλφαριθμητικού στη θέση //offset//.
 +  * **reverse:** αντιστροφή στου αλφαριθμητικού.
 +  * **delete:** διαγραφή μέρους του αλφαριθμητικού.
 +
 +Μπορείτε να λάβετε ένα αντικείμενο τύπου String από ένα αντικείμενο της κλάσης StringBuffer χρησιμοποιώντας τη μέθοδο ''toString()''.
 +
 +Δείτε το παράδειγμα χρήσης των παραπάνω μεθόδων.
 +
 +<code java StringBufferExample.java>
 +public class StringBufferExample {
 +  public static  void main(String [] args) {
 +    String hello = "Love Java";
 +    StringBuffer helloBuffer = new StringBuffer(hello);
 +    
 +    System.out.println("append: "+ helloBuffer.append(" Beans!"));
 +    System.out.println("delete: "+ helloBuffer.delete(5, helloBuffer.length()) );
 +    System.out.println("insert: "+ helloBuffer.insert(5, "coffee Beans "));
 +    System.out.println("reverse:"+ helloBuffer.reverse() );
 +    
 +  }
 +}
 +</code>
 +
 +<WRAP tip 80% center round>
 +Η διαφορά των δύο κλάσεων έγκειται στο ότι η κλάση [[https://docs.oracle.com/javase/7/docs/api/java/lang/StringBuilder.html|java.lang.StringBuilder]] δεν παρέχει ασφάλεια κατά το διαμοιρασμό αντικειμένων της από διαφορετικά νήματα σε αντίθεση με την κλάση [[https://docs.oracle.com/javase/7/docs/api/java/lang/StringBuffer.html|java.lang.StringBuffer]]. Εάν ο κώδικας σας δεν χρησιμοποιεί νήματα προτιμήστε την κλάση [[https://docs.oracle.com/javase/7/docs/api/java/lang/StringBuilder.html|java.lang.StringBuilder]] διότι είναι λίγο πιο γρήγορη.
 +</WRAP>
 +
 +|Προηγούμενο: [[:java:autoboxing | Auto-boxing & auto-unboxing ]] | [[:toc | Περιεχόμενα]] | Επόμενο: [[:java:enum | Απαριθμήσεις ]]|
java/string.txt · Last modified: 2022/02/24 12:41 by gthanos