java:string

Differences

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

Link to this comparison view

Both sides previous revision Previous revision
Next revision
Previous revision
Next revision Both sides next revision
java:string [2016/02/26 14:17]
gthanos
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 java>
 +String str = "Her dog is named \"Lili\"";
 </code> </code>
  
Line 15: Line 21:
     char [] charSequence = { 'H','e','l','l','o',' ','W','o','r','l','d','!' };     char [] charSequence = { 'H','e','l','l','o',' ','W','o','r','l','d','!' };
     String str1 = new String(charSequence);     String str1 = new String(charSequence);
-    String str2 = new String(charSequence, 0, 5); +    String str2 = new String(charSequence, 0, 5);  // Hello 
-    String str3 = new String(charSequence, 6, 5);+    String str3 = new String(charSequence, 6, 5);  // World
     System.out.println("str1: " + str1);     System.out.println("str1: " + str1);
     System.out.println("str2: " + str2);     System.out.println("str2: " + str2);
Line 24: Line 30:
 </code> </code>
  
-Οι τελευταίες δύο γραμμές παράγουν τα αλφαριθμητικά ''Hello'' και ''World''.+Οι τελευταίες δύο γραμμές εκτυπώνουν τα αλφαριθμητικά ''Hello'' και ''World''.
  
 Δύο ή αλφαριθμητικά μπορούν να συνεννοηθούν παράγοντας ένα νέο αλφαριθμητικό. Για την συνένωση δύο αλφαριθμητικών μπορείτε να χρησιμοποιήσετε τη μέθοδο concat() ή τον τελεστή ''+'', όπως παρακάτω: Δύο ή αλφαριθμητικά μπορούν να συνεννοηθούν παράγοντας ένα νέο αλφαριθμητικό. Για την συνένωση δύο αλφαριθμητικών μπορείτε να χρησιμοποιήσετε τη μέθοδο concat() ή τον τελεστή ''+'', όπως παρακάτω:
Line 50: Line 56:
 </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