עיתוק String
הוצג| English | משמעות |
|---|---|
| immutable/ɪˈmjuːtəbl/ | בלתי משתנה |
מחרוזות ואינדקסים
Stringהיא רצף של תווים, הממוספרים החל מ-0.- ב-
"HELLO", האינדקס0הוא'H', האינדקס1הוא'E', … האינדקס4הוא'O'. s.length()מחזיר את מספר התווים; האינדקס האחרון הואlength() - 1.- טעויות "Off-by-one" הן השגיאה הנפוצה ביותר במחרוזות.
תת-מחרוזת
s.substring(start, end)מחזירה את התווים מהאינדקסstartעד אך לא כוללend."HELLO".substring(1, 3)→"EL"(אינדקסים1ו-2, לא3).s.substring(start)(פרמטר אחד) נמתח מהאינדקסstartועד הסוף.- אורך התוצאה הוא
end - start.
indexOf ו-equals
s.indexOf("lo")מחזיר את המיקום הראשון שבו הטקסט מופיע, או-1אם לא נמצא.s.equals(t)בודק האם לשני String יש אותות זהות — מחזיר ערךboolean.- השתמש ב-
.equals(), לעולם לא ב-==, כדי להשוות תוכן של String. ==מבצע השוואה בין רפרננסים (כתובות), ולא בין התוויות.
Strings הם אלו-שינוי (immutable)
- String הוא בלתי-ניתן לשינוי: האותיות שלו לא יכולות לעולם להיות שונות לאחר היצירה.
- מתודות כמו
substringו-toUpperCaseמחזירות String חדש — הן לא עורכות את המקורי. s.toUpperCase();לבדו אינו עושה כלום נראה; עליך לאחסן את התוצאה:s = s.toUpperCase();- היותו בלתי-ניתן לשינוי הוא הסיבה שהמתודות על String תמיד מחזירות ערך חדש.
השווה תוכן String עם .equals(), לעולם לא עם ==. == בודק אם שני הרפרננסים מ指向 אותו אובייקט, לא אם התוויות תואמות — כך ש-a == b יכול להיות false גם כאשר שניהם "cat". ו-Strings הם אלו-שינוי: s.toUpperCase() מחזיר String חדש ומשאיר את s ללא שינוי אלא אם כן תעידוד מחדש את s = s.toUpperCase();.
עבודה עם "HELLO":
"HELLO".length()→5; המיקום0הוא'H', המיקום4הוא'O'."HELLO".substring(1, 4)→"ELL"(מיקומים1, 2, 3) ."HELLO".indexOf("L")→2(המיקום הראשון שלL);.equals("hello")→false(הכתיבה שונה).
ל-String יש מיקומים החל מ-0 (המיקום האחרון הוא length()-1). substring(start, end) מחזיר מיקומים מ-start עד end-1; indexOf מוצא מיקום (או -1). השווה תוכן עם .equals(), לא עם ==. String הוא בלתי-ניתן לשינוי — המתודות מחזירות String חדש, ולכן יש לבצע התחדשות ערך כדי לשמור על השינוי.
אינדקס HELLO החל מ-0
substring(1, 4) לוקח את האינדקסים 1, 2, 3 → ELL.
במחרוזת "HELLO", איזה תווית נמצאת באינדקס 0?
Difficulty 1/5 · 100 coins + a small bonus on first completion today
מחרוזות ממודדות החל מ-0, ולכן אינדקס 0 הוא 'H'.
מה מחזיר "HELLO".substring(1, 3)?
Difficulty 1/5 · 100 coins + a small bonus on first completion today
אינדקסים 1 ו-2 (עד אך לא כולל 3) → EL.
כדי להשוות אם שתי מחרוזות מכילות אותם תווים, יש להשתמש ב...
Difficulty 1/5 · 100 coins + a small bonus on first completion today
.equals() משווה תוכן; == משווה הפניות.
s.toUpperCase(); לבדו אינו משנה את המחרוזת s במקום.
Difficulty 1/5 · 100 coins + a small bonus on first completion today
מחרוזות הן בלתי ניתנות לשינוי — יש למנות מחדש s = s.toUpperCase();.
מה מחזיר "HELLO".indexOf("L") (ה-L הראשון)?
Difficulty 2/5 · 140 coins + a small bonus on first completion today
ה-L הראשון נמצא באינדקס 2.