מה זה Java String Pool?

**על פי שמו, String Pool in java הוא בריכה של מחרוזות שמאוחסנות ב Java Heap Memory. אנו יודעים ש-String הוא מחלקה מיוחדת ב-Java ואנו יכולים ליצור אובייקטי String באמצעות אופרטור new וגם לספק ערכים בתוך גרשיים.

String Pool in Java**

הנה תרשים שמסביר בבהירות איך נשמר String Pool במרחב הזיכרון המיועד ל Java ומה קורה כאשר אנו משתמשים בדרכים שונות ליצירת Strings. ה-Pool של ה-String אפשרי רק משום שה-String הוא immutable ב-Java ומימוש של המושג String interning. ה-Pool של ה-String הוא גם דוגמה לתבנית עיצוב של Flyweight. ה-Pool של ה-String עוזר בחיסכון בהרבה מקום ל-Runtime של Java אף על פי שזה דורש יותר זמן ליצור את ה-String. כאשר אנו משתמשים בגרשיים כפולים כדי ליצור String, זה תחילה מחפש String עם אותו ערך ב-Pool של ה-String, אם מצא זאת הוא פשוט מחזיר את ההפניה אחרת הוא יוצר String חדש ב-Pool ואז מחזיר את ההפניה. אך בשימוש באופרטור new, אנו מכריחים את מחלקת String ליצור אובייקט String חדש במרחב ה-heap. אנו יכולים להשתמש בשיטת intern() כדי לשים אותו ב-Pool או להפנות לאובייקט String אחר מ-Pool של ה-String שיש לו אותו ערך. הנה תוכנית Java עבור התמונה של ה-String Pool:

package com.journaldev.util;

public class StringPool {

    /**
     * Java String Pool example
     * @param args
     */
    public static void main(String[] args) {
        String s1 = "Cat";
        String s2 = "Cat";
        String s3 = new String("Cat");
        
        System.out.println("s1 == s2 :"+(s1==s2));
        System.out.println("s1 == s3 :"+(s1==s3));
    }

}

פלט של התוכנית האמורה לעיל הוא:

s1 == s2 :true
s1 == s3 :false

קריאה מומלצת: Class של String ב-Java

כמה מחרוזות נוצרות בבריכת המחרוזות?

לעיתים בראיון עבודה ב-Java, יש לך סיכוי לקבל שאלה שקשורה לבריכת המחרוזות. לדוגמה, כמה מחרוזות ייווצרו בהצהרה הבאה;

String str = new String("Cat");

בהצהרה לעיל, ייווצרו או מחרוזת אחת או שתי מחרוזות. אם כבר קיימת מחרוזת מילולית "Cat" בבריכה, אז רק מחרוזת אחת "str" תיווצר בבריכה. אם אין מחרוזת מילולית "Cat" בבריכה, אז תיווצר תחילה בבריכה ואז בזיכרון הערימה, ולכן ייווצרו סך הכול שתי אובייקטי מחרוזת. קרא: שאלות ראיון ב-Java על מחרוזות

Source:
https://www.digitalocean.com/community/tutorials/what-is-java-string-pool