This is an old revision of the document!
Table of Contents
Αλφαριθμητικά (Strings)
Τα αλφαριθμητικά στην Java υλοποιούνται μέσω της κλάσης java.lang.String. Κάθε αλφαριθμητικό στην Java είναι ένα αντικείμενο της κλάσης String το οποίο δεν μπορεί να μεταβληθεί μετά την δημιουργία του(immutable).
Σε μία μεταβλητή τύπου String μπορείτε να αναθέσετε απευθείας ένα αλφαριθμητικό δηλώνοντας το μέσα σε διπλά εισαγωγικά.
String str = "Hello World!";
Εάν θέλετε να εισάγεται τον χαρακτήρα '“' μέσα στο αλφαριθμητικό σας θα πρέπει να τον αντικαταστήσετε με τον χαρακτήρα '\”', όπως παρακάτω:
String str = "Her dog is named \"Lili\"";
Εναλλακτικά μπορείτε να χρησιμοποιήσετε έναν από τους διαθέσιμους κατασκευαστές της κλάσης για να παράγεται ένα String. Για παράδειγμα μπορείτε να παράγετε String από ένα πίνακα χαρακτήρων ως εξής:
- 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); } }
Οι τελευταίες δύο γραμμές εκτυπώνουν τα αλφαριθμητικά Hello
και World
.
Δύο ή αλφαριθμητικά μπορούν να συνεννοηθούν παράγοντας ένα νέο αλφαριθμητικό. Για την συνένωση δύο αλφαριθμητικών μπορείτε να χρησιμοποιήσετε τη μέθοδο concat() ή τον τελεστή +
, όπως παρακάτω:
- StringExample.java
public class StringExample { 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); } }
Κάθε αλφαριθμητικό διαθέτει συγκεκριμένο μήκος χαρακτήρων που δίνεται από την μέθοδο length(), όπως παρακάτω
- StringExample.java
public class StringExample { public static void main(String [] args) { String str = "Hello World!"; int strLength = str.length(); System.out.println("String length is "+strLength); } }
Τέλος μπορείτε να δημιουργήσετε μορφοποιημένα Strings μέσω της μεθόδου format() (ανάλογη της printf() στη C) όπως παρακάτω.
- StringExample.java
public class StringExample { public static void main(String [] args) { float floatVar = 5.333F; // if you miss the F at the end you get an error about possible loss of precision. 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); } }
Οι κλάσεις StringBuilder και StringBuffer
Για την κλάση String αναφέραμε ότι τα αλφαριθμητικά που ανήκουν σε αυτή δεν μεταβάλλονται. Εάν θέλετε να προσθέσετε ή να αφαιρέσετε περιεχόμενο από ένα αλφαριθμητικό, χωρίς απαραίτητα να δημιουργήσετε νέο αντικείμενο μπορείτε να χρησιμοποιήσετε τις κλάσεις java.lang.StringBuilder και java.lang.StringBuffer. Βασικό χαρακτηριστικό των παραπάνω κλάσεων είναι η ύπαρξη μεθόδων για την μεταβολή του αλφαριθμητικού όπως:
- append: προσθήκη χαρακτήρων στο τέλος του αλφαριθμητικού.
- insert: προσθήκη ενός αλφαριθμητικού στη θέση offset.
- reverse: αντιστροφή στου αλφαριθμητικού.
- delete: διαγραφή μέρους του αλφαριθμητικού.
Μπορείτε να λάβετε ένα αντικείμενο τύπου String από ένα αντικείμενο της κλάσης StringBuffer χρησιμοποιώντας τη μέθοδο toString()
.
Δείτε το παράδειγμα χρήσης των παραπάνω μεθόδων.
- 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() ); } }
Η διαφορά των δύο κλάσεων έγκειται στο ότι η κλάση java.lang.StringBuilder δεν παρέχει ασφάλεια κατά το διαμοιρασμό αντικειμένων της από διαφορετικά νήματα σε αντίθεση με την κλάση java.lang.StringBuffer. Εάν ο κώδικας σας δεν χρησιμοποιεί νήματα προτιμήστε την κλάση java.lang.StringBuilder διότι είναι λίγο πιο γρήγορη.
Προηγούμενο: Auto-boxing & auto-unboxing | Περιεχόμενα | Επόμενο: Απαριθμήσεις |