User Tools

Site Tools


java:string

Differences

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

Link to this comparison view

Both sides previous revisionPrevious revision
Next revision
Previous revision
java:string [2016/02/29 10:05] – [Αλφαριθμητικά (Strings)] gthanosjava:string [2022/02/24 12:41] (current) – [Οι κλάσεις StringBuilder και StringBuffer] gthanos
Line 1: Line 1:
 ====== Αλφαριθμητικά (Strings) ====== ====== Αλφαριθμητικά (Strings) ======
  
-Τα αλφαριθμητικά στην 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//) μετά την δημιουργία του.  
 + 
 +Μπορείτε να αναθέσετε ένα αλφαριθμητικό σε μία μεταβλητή τύπου [[https://docs.oracle.com/javase/7/docs/api/java/lang/String.html|java.lang.String]], δηλώνοντας το μέσα σε διπλά εισαγωγικά. Το αντικείμενο θα δημιουργηθεί και θα ανατεθεί στη συγκεκριμένη μεταβλητή, όπως παρακάτω.
  
-Σε μία μεταβλητή τύπου String μπορείτε να αναθέσετε απευθείας ένα αλφαριθμητικό δηλώνοντας το μέσα σε διπλά εισαγωγικά.  
 <code java> <code java>
 String str = "Hello  World!"; String str = "Hello  World!";
 +ή ισοδύναμα
 +String str = new String("Hello  World!");
 </code> </code>
  
-Εάν θέλετε να εισάγεται τον χαρακτήρα '"' μέσα στο αλφαριθμητικό σας θα πρέπει να τον αντικαταστήσετε με τον χαρακτήρα '\"', όπως παρακάτω: +Δύο ή αλφαριθμητικά μπορούν να ενωθούν για να παράγουν ένα νέο αλφαριθμητικό. Για την συνένωση δύο αλφαριθμητικών μπορείτε να χρησιμοποιήσετε τη μέθοδο concat() ή τον τελεστή ''+'', όπως παρακάτω. Οι δύο τρόποι είναι ισοδύναμοι. Το αντικείμενο που παράγεται είναι νέο αλφαριθμητικό, διότι όπως προαναφέρθηκε τα υφιστάμενα αντικείμενα τύπου String είναι αμετάβλητα.
- +
-<code java> +
-String str = "Her dog is named \"Lili\""; +
-</code> +
- +
-Εναλλακτικά μπορείτε να χρησιμοποιήσετε έναν από τους διαθέσιμους κατασκευαστές της κλάσης για να παράγεται ένα 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() ή τον τελεστή ''+'', όπως παρακάτω:+
  
 <code java StringExample.java> <code java StringExample.java>
Line 45: Line 24:
 </code> </code>
  
-Κάθε αλφαριθμητικό διαθέτει συγκεκριμένο μήκος χαρακτήρων που δίνεται από την μέθοδο //length()//, όπως παρακάτω+Κάθε αλφαριθμητικό διαθέτει συγκεκριμένο μήκος χαρακτήρων που δίνεται από τη μέθοδο //length()//, όπως παρακάτω
 <code java StringExample.java> <code java StringExample.java>
 public class StringExample { public class StringExample {
Line 56: Line 35:
 </code> </code>
  
-Τέλος μπορείτε να δημιουργήσετε μορφοποιημένα Strings μέσω της μεθόδου //format()// (ανάλογη της printf() στη C) όπως παρακάτω.+Επειδή τα διπλά εισαγωγικά συμβολίζουν τον τερματισμό της συμβολοσειράς, στην περίπτωση που θέλετε να εισάγεται τον χαρακτήρα '"' μέσα στο αλφαριθμητικό θα πρέπει να τον αντικαταστήσετε με τον χαρακτήρα '\"', όπως παρακάτω: 
 + 
 +<code java> 
 +String str = "Her dog is named \"Lili\""; 
 +</code> 
 + 
 +=== Μορφοποίηση ενός String === 
 + 
 +Mπορείτε να δημιουργήσετε μορφοποιημένα Strings μέσω της μεθόδου [[https://docs.oracle.com/javase/8/docs/api/java/lang/String.html#format-java.lang.String-java.lang.Object...-|java.lang.String.format]] όπως παρακάτω.
  
 <code java StringExample.java> <code java StringExample.java>
Line 63: Line 50:
     float floatVar = 5.333F;  // if you miss the F at the end you get an error about possible loss of precision.     float floatVar = 5.333F;  // if you miss the F at the end you get an error about possible loss of precision.
     int intVar = 100;     int intVar = 100;
-    String stringVar = "Python";+    String stringVar = "Java Coffee Beans";
     String fs = String.format("The value of the float variable is " +     String fs = String.format("The value of the float variable is " +
                               "%f, while the value of the integer " +                               "%f, while the value of the integer " +
Line 73: Line 60:
 </code> </code>
  
-===== Η κλάση StringBuffer =====+===== Οι κλάσεις StringBuilder και StringBuffer =====
  
-Για την κλάση String αναφέραμε ότι τα αλφαριθμητικά που ανήκουν σε αυτή δεν μεταβάλλονται. Εάν θέλετε να προσθέσετε ή να αφαιρέσετε περιεχόμενο από ένα αλφαριθμητικό, χωρίς απαραίτητα να δημιουργήσετε νέο μπορείτε να χρησιμοποιήσετε την κλάση [[https://docs.oracle.com/javase/7/docs/api/java/lang/StringBuffer.html|java.lang.StringBuffer]]. Βασικό χαρακτηριστικό της κλάσης 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:** προσθήκη χαρακτήρων στο τέλος του αλφαριθμητικού.   * **append:** προσθήκη χαρακτήρων στο τέλος του αλφαριθμητικού.
   * **insert:** προσθήκη ενός αλφαριθμητικού στη θέση //offset//.   * **insert:** προσθήκη ενός αλφαριθμητικού στη θέση //offset//.
Line 81: Line 68:
   * **delete:** διαγραφή μέρους του αλφαριθμητικού.   * **delete:** διαγραφή μέρους του αλφαριθμητικού.
  
-Μπορείτε να λάβετε ένα αντικείμενο τύπου String από ένα αντικείμενο της κλάσης StringBuffer χρησιμοποιώντας μία από τις παρακάτω μέθοδους +Μπορείτε να λάβετε ένα αντικείμενο τύπου String από ένα αντικείμενο της κλάσης StringBuffer χρησιμοποιώντας τη μέθοδο ''toString()''.
-  * toString()+
-  * substring(0);+
  
 Δείτε το παράδειγμα χρήσης των παραπάνω μεθόδων. Δείτε το παράδειγμα χρήσης των παραπάνω μεθόδων.
Line 101: Line 86:
 } }
 </code> </code>
 +
 +<WRAP tip 80% center round>
 +Η διαφορά των δύο κλάσεων έγκειται στο ότι η κλάση [[https://docs.oracle.com/javase/7/docs/api/java/lang/StringBuilder.html|java.lang.StringBuilder]] δεν παρέχει ασφάλεια κατά το διαμοιρασμό αντικειμένων της από διαφορετικά νήματα (//threads//) σε αντίθεση με την κλάση [[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:member_initialization | Αρχικοποίηση των μελών της κλάσης ]] | [[:toc | Περιεχόμενα]] | Επόμενο: [[:java:toString| Η μέθοδος toString ]]|
java/string.1456740326.txt.gz · Last modified: 2016/02/29 10:05 by gthanos