מחרוזת בלתי ניתנת לשינוי בג'אווה: כל מה שאתה צריך לדעת



מאמר זה יספק לך ידע מפורט ומקיף על מחרוזת בלתי ניתנת לשינוי ב- Java. מדוע זה חשוב?

התמודדות עם מחרוזת בלתי ניתנת לשינוי ב הוא היבט חשוב מאוד בכל שפת תכנות. במאמר זה נדון בעצות הבאות:

מבוא למחרוזת בלתי ניתנת לשינוי בג'אווה

בבריכת המיתרים יש אובייקטים של מחרוזת שנשמרים במטמון ובגלל זה אין שינוי במחרוזת. לקוחות מרובים חולקים את מילולי המיתרים השמורים במטמון. הסיכונים הכרוכים בפעולה של לקוח אחד ישפיעו על כל הלקוחות האחרים.





לדוגמא, כאשר לקוח משנה את ערך המחרוזת 'Test' ל- 'TEST', כל שאר הלקוחות יראו את הערך שהשתנה. מכיוון שמטמון אובייקטים מחרוזת היה חשוב לביצועים, מחלקת המחרוזת הבלתי ניתנת לשינוי נמנעה מהסיכון. גַם, המחרוזת נעשתה סופית כדי שהנוכח של מעמד המיתרים לא ייפגע. דוגמה לאי-משתנות, אחסון במטמון, חישוב קוד hash שנעשה על ידי הרחבה ועקיפת התנהגויות.

מפתח Hashmap

מפתח HashMap פופולרי מאוד, אי-משתנות חשובה מאוד כך שניתן יהיה לאחזר את אובייקט הערך מ- HashMap. גיבוב הוא העיקרון של HashMap, הדורש שלאותו ערך יש לתפקד כראוי. שני קודי hash שונים מיוצרים אחד בזמן ההכנסה ואחר בזמן השחזור כאשר התוכן משתנה לאחר ההכנסה, ועלול לאבד אובייקט ערך מפה במפה.



מחרוזת Hashtable-Immutable בג
שיעור המחרוזות הבלתי משתנה בג'אווה הוא הנפוץ ביותר .הדיון מתחיל, מהו מחרוזת, במה זה שונה ממחרוזת ב- ++ C, ואז השאלה הבאה היא אובייקטים בלתי ניתנים לשינוי ב- Java, היתרונות של האובייקט הבלתי ניתן לשינוי, מה השימוש בהם והתרחישים לשימוש בהם.

תאריך תאריך בדוגמת SQL

צורך במחרוזת בלתי ניתנת לשינוי בג'אווה

שתי סיבות חשובות לומר מדוע מחרוזת Immutable String נעשית בג'אווה:

1. לא ניתן בכלל במקרה שיהיה אובייקט מחרוזת אחד / מילולי.



מה זה יישומון בג'אווה עם דוגמה

הבה נתייחס לדוגמא הבאה:

ניתן להפנות 'מבחן' על ידי משתני התייחסות רבים. אם מישהו מהם משנה את הערך עבור אחרים, זה יושפע גם כן. בואו נראה איך.

מחרוזת A = 'מבחן'
מחרוזת B = 'מבחן'


מחרוזת A המכונה 'Test' .toUpperCase () המשנה את אותו אובייקט ל,'מִבְחָן'כך ש- B יהיה גם 'TEST' שאינו נחוץ. להלן תרשים המסביר לנו כיצד נוצר מחרוזת בזיכרון הערמה ובמאגר מילולי מחרוזת.

2. המחרוזת שימשה באופן נרחב כפרמטר עבור שיעורי Java רבים. לדוגמא, כשאנחנו פותחים חיבור רשת, נוכל להעביר את שם המארח ומספר היציאה כמחרוזת, לפתיחת חיבור מסד נתונים נוכל להעביר את כתובת ה- URL כמחרוזת.


מחרוזת בלתי ניתנת לשינוי תוביל לאיומים ביטחוניים חמורים. לדוגמה, מישהו יכול לגשת לקובץ שאליו יש לו גישה ואז לשנות את שם שם הקובץ כדי לקבל גישה לקובץ האחר. במקרה של אי-שינוי, אין צורך לדאוג לאיומים אלה.

הקצאת זיכרון דינמית ב- c ++

מחרוזת בלתי ניתנת לשינוי יכולה לשתף בבטחה גם אשכולות, וזה חשוב לתכנות רב-הברגה. מופע מחרוזות שאינו ניתן לשינוי הוא חוט בטיחותי בג'אווה ולכן אין צורך לסנכרן את פעולת המחרוזת חיצונית כדי להימנע מבעיות סנכרון בג'אווה. נקודה חשובה נוספת שיש לציין היא דליפת הזיכרון הנגרמת על ידי Substring, שאינה נושא שקשור לשרשור אלא משהו שצריך להיות מודע אליו.

עם זאת, אנו מגיעים לסוף מאמר זה 'מחרוזת בלתי ניתנת לשינוי בג'אווה'. ג לעזאזל עם מאת אדוריקה, חברת למידה מקוונת מהימנה עם רשת של יותר מ -250,000 לומדים מרוצים הפזורים ברחבי העולם. קורס ההכשרה וההסמכה של Java J2EE ו- SOA של אדוריקה מיועד לסטודנטים ואנשי מקצוע שרוצים להיות מפתח Java.

יש לך שאלה עבורנו? אנא הזכיר זאת במדור התגובות בבלוג זה ונחזור אליך בהקדם האפשרי.