ההבדל בין מחרוזת לשיעור StringBuffer ב- Java
תוֹכֶן
מחרוזת ו- StringBuffer הן המעמדות הפועלות על מיתרים. StringBuffer הוא כיתת העמיתים של מחרוזת הכיתה. מטרת מחרוזת היא באורך קבוע. מושא מחלקת StringBuffer ניתן לגדול. ההבדל הבסיסי בין String ו- StringBuffer הוא שמטרת המעמד "String" היא בלתי ניתן לשינוי. מושא הכיתה "StringBuffer" משתנה.
- טבלת השוואה
- הגדרה
- הבדלים עיקריים
- סיכום
טבלת השוואה
בסיס להשוואה | מחרוזת | StringBuffer |
---|---|---|
בסיסי | אורך אובייקט המיתר קבוע. | ניתן להגדיל את אורך ה- StringBuffer. |
שינוי | עצם מחרוזת אינו ניתן לשינוי. | אובייקט StringBuffer ניתן לשינוי. |
ביצועים | זה איטי יותר במהלך השרשור. | זה מהיר יותר במהלך שרשור. |
זיכרון | צורכת יותר זיכרון. | צורכת פחות זיכרון. |
אחסון | מחרוזת בריכה קבועה. | זיכרון ערימה. |
הגדרת מיתר
"מחרוזת" היא כיתה ב- Java. האובייקט של מחרוזת הכיתה הוא באורך קבוע, והכי חשוב לזכור, האובייקט של מחרוזת הכיתה הוא "בלתי משתנה". לאחר שתאתחל את אובייקט המחרוזת, אינך יכול לשנות את האובייקט שוב. מושא מחרוזת הכיתה מאוחסן בבריכת מחרוזת קבועה.
הבה ראשית, כי בכל פעם שאתה יוצר מחרוזת כלשהי; אתה יוצר אובייקט מסוג מחרוזת. קבועי המיתרים הם גם חפצי מיתר.
System.out.ln ("שלום זה פיתרון Teckpix");
בהצהרה שלמעלה, המחרוזת "שלום זה פיתרון Teckpix" היא קבוע מחרוזת.
כעת הבנו את ההחלפות של אובייקט המיתר בעזרת דוגמא.
String str = מחרוזת חדשה ("Teckpix"); str.concat ("פיתרון"); system.out.ln (str); // פתיחת Teckpix
בקוד לעיל ניסיתי לשרשר בין שני המיתרים "Teckpix" ו- "Solution". כידוע בכל פעם שנוצר מחרוזת שמשמעותו נוצר אובייקט מסוג מחרוזת. מכאן שהמחרוזת "Teckpix" יוצרת אובייקט שהתייחסותו מוקצה לאובייקט המחרוזת "str". בשלב הבא ניסיתי לשרשר מחרוזת אחרת "פתרון" עם המחרוזת "Teckpix" בשיטה "concat ()" של מחרוזת הכיתה.
מכיוון שאובייקטים של מחרוזת אינם ניתנים לשינוי, לא מתבצע שום שינוי במחרוזת "Teckpix" והמחרוזת החדשה "Solution" יוצרת אובייקט אחר בבריכה הקבועה של המיתרים. עם זאת, ההתייחסות לאובייקט "פיתרון" לא נתפסת על ידי אף אובייקט ומכאן שההתייחסות לאובייקט פתרון הולכת לאיבוד אם כי היא עדיין קיימת בבריכה הקבועה של המיתרים. מכיוון שלא נעשה שום שינוי באובייקט Teckpix, כאשר אני האובייקט str שאליו הקצתי את ההפניה של Teckpix קודם לכן, יהיה המחרוזת "Teckpix" בלבד.
הגדרת StringBuffer
הכיתה "StringBuffer" היא כיתת העמיתים של הכיתה "מחרוזת". StringBuffer בכיתה מספק פונקציונליות רבה יותר למיתרים. ניתן לשנות את האובייקט של מחלקת StringBuffer וזה האובייקט שניתן לשנות. אורך האובייקט StringBuffer ניתן לגדול. אתה יכול להכניס את התווים או המצעים באמצע מילולי המיתר המוקצים לאובייקט StringBuffer או בסוף זה. StringBuffer מקצה מקום ל -16 תווים נוספים כאשר לא מתבקש אורך ספציפי.
הבה נבין את ההדדיות של אובייקט ה- StringBuffer בעזרת דוגמא:
StringBuffer Sb = StringBuffer חדש ("Teckpix"); Sb.append ("פיתרון"); system.out.ln (Sb); // פתרון Teckpix לפלט
כידוע שאובייקט ה- StringBuffer ניתן לשינוי. שיטת התוספת () משנה את האובייקט StringBuffer Sb אליו בתחילה מוקצה הפניה לאובייקט Teckpix מוקדם יותר. השיטה הוסף () מצרפת את מיתר המילולי החדש "פיתרון", לסוף מחרוזת המילולית "Teckpix". עכשיו כשאני אובייקט Sb זה יהיה אובייקט המחרוזת ששונה "פתרונות Teckpix".
- אורך של אובייקט מחרוזת קבוע אך ניתן להגדיל את אורך האובייקט של StringBuffer בעת הצורך.
- אובייקט מחרוזת אינו ניתן לשינוי, כלומר לא ניתן להקצות שוב את האובייקט ואילו האובייקט של StringBuffer ניתן להשתנות.
- אובייקט מחרוזת איטי בביצועים ואילו אובייקט StringBuffer מהיר יותר.
- אובייקט מחרוזת צורך יותר זיכרון ואילו אובייקטים של StringBuffer צורכים פחות זיכרון.
- חפצי מחרוזת מאוחסנים בבריכה קבועה ואילו אובייקטים של StringBuffer מאוחסנים בזיכרון הערימה.
סיכום:
אובייקטים של StringBuffer מספקים פונקציונליות רבה יותר למיתרים בהשוואה למחרוזת המחלקה. מכאן שעדיף לעבוד עם StringBuffer במקום מחרוזת כיתתית.