Ποια είναι η έννοια του String Pool στην Ιάβα;



Το String Pool στη Java είναι μια ομάδα συμβολοσειρών που είναι αποθηκευμένες στο Java Heap Memory. Αυτό το σεμινάριο θα σας βοηθήσει με μια λεπτομερή προσέγγιση στο Java String Pool με παραδείγματα.

Έχετε ακούσει για τον όρο 'Μπιλιάρδο στην Ιάβα;' Λοιπόν, αν όχι, έχετε προσγειωθεί στο σωστό μέρος. Το String Pool στην Ιάβα είναι μια ομάδα Strings στην οποία αποθηκεύεται Μνήμη σωρού. Ας σκάψουμε λίγο πιο βαθιά και να κατανοήσουμε λεπτομερώς αυτήν την ιδέα του Java String pool.

Τα ακόλουθα σημεία θα συζητηθούν σε αυτό το άρθρο:





Ας ξεκινήσουμε!

Πρώτα απ 'όλα, ας καταλάβουμε πώς ακριβώς δημιουργείται ένα αντικείμενο συμβολοσειράς!



Πώς να δημιουργήσετε μια συμβολοσειρά;

Για να δημιουργήσετε ένα αντικείμενο String στην Java, υπάρχουν δύο τρόποι:

  • Χρήση του νέου χειριστή. Για παράδειγμα,
String s1 = new String («Joey»)
  • Χρησιμοποιώντας μια συμβολοσειρά κυριολεκτική ή σταθερή έκφραση. Για παράδειγμα,
String s1 = 'Joey' (string literal) ή String s1 = 'Joe' + 'y' (σταθερή έκφραση συμβολοσειράς)

Τώρα, τι είναι αυτό το String pool για το οποίο μιλώ και πώς σχετίζεται η δημιουργία μιας συμβολοσειράς στην Java. Επιτρέψτε μου να μειώσω την ακαταστασία!

Τι είναι το String Pool στην Java;

Το String Pool είναι ένας χώρος αποθήκευσης στο σωρό Java.



Κατανομή συμβολοσειρών, όπως όλα κατανομή αντικειμένων , αποδεικνύεται δαπανηρή υπόθεση και στις δύο περιπτώσεις του χρόνου και της μνήμης. Το JVM εκτελεί μερικά βήματα ενώ αρχίζει τις γραμματοσειρές συμβολοσειράς για να αυξήσει την απόδοση και να μειώσει τα γενικά έξοδα μνήμης. Για να μειωθεί ο αριθμός των αντικειμένων String που δημιουργήθηκαν στο JVM, η κλάση String διατηρεί ένα σύνολο συμβολοσειρών.

Κάθε φορά που δημιουργείται μια κυριολεκτική συμβολοσειρά, το JVM ελέγχει πρώτα την ομάδα συμβολοσειράς κυριολεκτικά. Εάν η συμβολοσειρά υπάρχει ήδη στην ομάδα συμβολοσειρών, επιστρέφεται μια αναφορά στην ομαδοποιημένη παρουσία. Εάν η συμβολοσειρά δεν υπάρχει στο pool, ένα νέο αντικείμενο String αρχικοποιείται και τοποθετείται στο pool.

Αφού μάθω τη θεωρητική ιδέα, επιτρέψτε μου να σας πω πώς λειτουργεί μια πισίνα String στην Java βήμα προς βήμα με τη βοήθεια απλών περιπτώσεων!

Πώς λειτουργεί το String pool στην Java;

Όταν δημιουργείτε μια νέα συμβολοσειρά όπως αυτή:

String s1 = 'Rachel'

Το JVM ελέγχει αυτόματα εάν υπάρχει η ίδια τιμή στην ομάδα σταθερών συμβολοσειρών ή όχι.

  • αν ναι, καταλαμβάνει την ήδη υπάρχουσα τιμή.
  • Εάν όχι, δημιουργεί μια νέα συμβολοσειρά από μόνη της και την προσθέτει στην ομάδα συμβολοσειρών.

Εάν θέλετε να σταματήσετε αυτήν τη συμπεριφορά, δημιουργήστε μια συμβολοσειρά χρησιμοποιώντας νέο χειριστή:

String s1 = new String ('Rachel')

Τώρα, εάν θέλετε να προσθέσετε αυτήν τη συμβολοσειρά στο , Η Java σάς παρέχει μια μέθοδο που ονομάζεται, μέθοδος intern () που μπορείτε να καλέσετε εγγενή μέθοδο intern () όπως αυτή:

S1. Εσωτερικό ()

Τώρα, θα σας δείξω την εφαρμογή και τη λειτουργία του string pool μέσω ενός παραδείγματος.

Αλλά πριν από αυτό, μια σύντομη υπενθύμιση!

Όπως γνωρίζετε εάν συγκρίνετε 2 αντικείμενα χρησιμοποιώντας == χειριστή συγκρίνει διευθύνσεις στη μνήμη.

Έτσι θα συγκρίνουμε τις χορδές χρησιμοποιώντας == για να είμαστε απόλυτα σίγουροι ότι είναι το ίδιο αντικείμενο ή όχι.

Τώρα, ας προχωρήσουμε στη διαδικασία εφαρμογής μας.

String Pool σε Java: Διάγραμμα ροής

String-pool - Edureka

java πώς να κλωνοποιήσετε ένα αντικείμενο

Τώρα ας καταλάβουμε τι συμβαίνει εδώ βήμα προς βήμα:

  • Η τάξη φορτώνεται όταν καλείται.
  • Το JVM αναζητά όλες τις συμβολοσειρές στο πρόγραμμα
  • Πρώτον, βρίσκει τη μεταβλητή s1 που αναφέρεται στην κυριολεκτική «Apple» και δημιουργείται στη μνήμη
  • Στη συνέχεια, μια αναφορά για το κυριολεκτικό 'Apple' τοποθετείται στη συμβολοσειρά σταθερή μνήμη pool.
  • Στη συνέχεια βρίσκει μια άλλη μεταβλητή s2 που αναφέρεται στην ίδια συμβολοσειρά κυριολεκτικά «Mango».
  • Στη συνέχεια, βρίσκει μια άλλη μεταβλητή s3 που αναφέρεται στην κυριολεκτική «Apple»
  • Τώρα που η JVM έχει ήδη βρει μια συμβολοσειρά 'Apple', και οι δύο μεταβλητές s1 και s3 θα αναφέρονται στο ίδιο αντικείμενο, δηλαδή 'Apple'.

Πρόγραμμα Java για το String Pool

δημόσια τάξη StringPoolExperiment {public static void main (String [] args) {String s1 = 'Rachel' String s2 = 'Rachel' String s3 = new String ('Rachel') String s4 = new String ('Rachel'). intern ( ) System.out.println (s1 == s2) // true System.out.println (s1 == s3) // false System.out.println (s1 == s4) // true}}

Παραγωγή:

Αληθής
Ψευδής
Αληθής

Στο παραπάνω παράδειγμα, μπορείτε να δείτε ξεκάθαρα τη χρήση της αρχικοποίησης συμβολοσειράς και με τους τρεις τρόπους, δηλαδή

String s1 = 'Rachel' String s2 = 'Rachel' String s3 = new String ('Rachel') String s4 = new String ('Rachel'). Intern ()

Η εσωτερική λειτουργία του προγράμματος ίσως πρέπει να είναι ξεκάθαρη τώρα.

Με αυτό, έφτασα στο τέλος του ιστολογίου μου. Ελπίζω ότι τα περιεχόμενα που εκπονήθηκαν εδώ σας βοήθησαν στη διεύρυνση της γνωστικής σας βάσης. Θα συνεχίσουμε να βουτάμε στον κόσμο της Java. Μείνετε συντονισμένοι!

Δείτε το από την Edureka, μια αξιόπιστη διαδικτυακή εταιρεία εκμάθησης με δίκτυο περισσότερων από 250.000 ικανοποιημένων μαθητών σε όλο τον κόσμο. Το μάθημα εκπαίδευσης και πιστοποίησης Java J2EE και SOA της Edureka έχει σχεδιαστεί για μαθητές και επαγγελματίες που θέλουν να γίνουν προγραμματιστές Java. Το μάθημα έχει σχεδιαστεί για να σας δώσει μια πρώτη αρχή στον προγραμματισμό Java και να σας εκπαιδεύσει τόσο για βασικές όσο και για προχωρημένες έννοιες Java μαζί με διάφορα πλαίσια Java όπως το Hibernate & Ανοιξη .

Έχετε μια ερώτηση για εμάς; Παρακαλώ αναφέρετέ το στην ενότητα σχολίων αυτού του ιστολογίου 'String Pool in Java' και θα επικοινωνήσουμε μαζί σας το συντομότερο δυνατό.