User Tools

Site Tools


java:string

Αλφαριθμητικά (Strings)

Τα αλφαριθμητικά στην Java υλοποιούνται μέσω της κλάσης java.lang.String. Κάθε αλφαριθμητικό στην Java είναι ένα αντικείμενο της κλάσης String το οποίο παραμένει αμετάβλητο (immutable) μετά την δημιουργία του.

Μπορείτε να αναθέσετε ένα αλφαριθμητικό σε μία μεταβλητή τύπου java.lang.String, δηλώνοντας το μέσα σε διπλά εισαγωγικά. Το αντικείμενο θα δημιουργηθεί και θα ανατεθεί στη συγκεκριμένη μεταβλητή, όπως παρακάτω.

String str = "Hello  World!";
ή ισοδύναμα
String str = new String("Hello  World!");

Δύο ή αλφαριθμητικά μπορούν να ενωθούν για να παράγουν ένα νέο αλφαριθμητικό. Για την συνένωση δύο αλφαριθμητικών μπορείτε να χρησιμοποιήσετε τη μέθοδο concat() ή τον τελεστή +, όπως παρακάτω. Οι δύο τρόποι είναι ισοδύναμοι. Το αντικείμενο που παράγεται είναι νέο αλφαριθμητικό, διότι όπως προαναφέρθηκε τα υφιστάμενα αντικείμενα τύπου String είναι αμετάβλητα.

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);
  }
}

Επειδή τα διπλά εισαγωγικά συμβολίζουν τον τερματισμό της συμβολοσειράς, στην περίπτωση που θέλετε να εισάγεται τον χαρακτήρα '“' μέσα στο αλφαριθμητικό θα πρέπει να τον αντικαταστήσετε με τον χαρακτήρα '\”', όπως παρακάτω:

String str = "Her dog is named \"Lili\"";

Μορφοποίηση ενός String

Mπορείτε να δημιουργήσετε μορφοποιημένα Strings μέσω της μεθόδου java.lang.String.format όπως παρακάτω.

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 = "Java Coffee Beans";
    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 δεν παρέχει ασφάλεια κατά το διαμοιρασμό αντικειμένων της από διαφορετικά νήματα (threads) σε αντίθεση με την κλάση java.lang.StringBuffer. Εάν ο κώδικας σας δεν χρησιμοποιεί νήματα προτιμήστε την κλάση java.lang.StringBuilder διότι είναι λίγο πιο γρήγορη σε εφαρμογές που αποτελούνται από ένα μόνο νήμα.

java/string.txt · Last modified: 2022/02/24 12:41 by gthanos