יצירת מערך והגשה אליו
הוצג| English | משמעות |
|---|---|
| initializer list/ɪˈnɪʃəlaɪzə lɪst/ | רשימת התחלה |
| ArrayIndexOutOfBoundsException/əˈreɪ ˈɪndeks ˈaʊtəv baʊndz ekˈsepʃn/ | שגיאת גבול אינדקס במערך |
יצירת ארגון
- הכרזת ארגון עם סוג ו
[]:int[] scores; - יצירתו עם
newוגודל:int[] scores = new int[5];(חמישה מקומות). - או פירט הערכים ישירות:
int[] scores = {85, 90, 78};(רשימת אתחול). - כל מקום מתחיל בערך ברירת המחדל של הסוג (
0עבורint,nullעבור אובייקטים).
אינדוקס מתחיל מאפס
- רכיבי הארגון ממוספרים החל מ-
0; המדד האחרון הואlength - 1. - גישה למקום באמצעות
scores[i]:scores[0]הוא הראשון,scores[2]השלישי. - הצבה באמצעות
scores[0] = 100;וקריאה באמצעותint x = scores[0];. - טעות באינדקס האחרון (Off-by-one) היא הבאג הנפוץ ביותר בארגונים.
שדה האורך
- גודל הארגון הוא שדה ה-
lengthשלו — ללא סוגריים:scores.length. - (השווה ל-
String'slength()שיטה, שיש לה סוגריים.) lengthקבוע ברגע יצירת המערך — מערכים אינם מתרחבים.- השתמש ב-
scores.lengthבתנאי מחזור כדי להישאר בגבולות המערכת.
גישה מחוץ לגבולות
- אינדקס תקף הוא בין
0ל-length - 1; כל דבר אחר יגרום לפליטת חריגה ArrayIndexOutOfBoundsException. - גישה ל-
scores[5]במערך באורך 5 היא מחוץ לגבולות (האינדקסים הם0–4). - תנאי הלולאה
i < scores.lengthשומר עלiבתחום התקין. - לעולם אל תשתמש ב-
<=עםlength— זה צעד אחד אחרי הסוף.
גודל המערך הוא length (שדה, ללא סוגריים); String אורך הוא length() (שיטה, עם סוגריים). שיבוש ביניהם לא יאפשר הקמפילציה. והאינדקסים התקפים הם בין 0 ל-length - 1 — scores[scores.length] הוא אחד אחרי הסוף ומגורם לפליטת חריגה ArrayIndexOutOfBoundsException. בצע מחזור עם i < scores.length, לעולם לא עם i <= scores.length.
יצירה וגישה למערך:
int[] a = {10, 20, 30};— אורך3, אינדקסים0,1,2.a[0]הוא10;a[2]הוא30;a.lengthהוא3.a[3]גורם לפליטת חריגה ArrayIndexOutOfBoundsException (אין אינדקס 3).
צור מערך באמצעות new type[size] או רשימת אתחול {...}. האלמנטים מסומנים מאינדקס 0 ועד length - 1, ומוגשים כ-a[i]. הגודל הוא השדה length (ללא סוגריים). גישה מחוץ ל-0..length-1 גורמת לפליטת חריגה ArrayIndexOutOfBoundsException — בצע מחזור עם i < a.length.
אינדקס של מערך החל מ-0
a[0]=10, a[1]=20, a[2]=30; אורך המערך הוא 3.
עבור int[] a = {10, 20, 30}; מה ערך של a[0]?
Difficulty 1/5 · 100 coins + a small bonus on first completion today
מערכות מקודדות מאינדקס 0, ולכן a[0] הוא האלמנט הראשון, 10.
איך מקבלים את גודל המערך a?
Difficulty 1/5 · 100 coins + a small bonus on first completion today
גודל המערך הוא שדה length (ללא סוגריים).
עבור int[] a = {10, 20, 30}; מה ערך של a.length?
Difficulty 2/5 · 140 coins + a small bonus on first completion today
שלושה אלמנטים → אורך 3.
עבור מערך באורך 5, נגישת אינדקס 5 (a[5])...
Difficulty 1/5 · 100 coins + a small bonus on first completion today
אינדקסים תקפים הם 0..4; אינדקס 5 הוא מחוץ לגבולות.
String משתמש ב-length() (שיטה) בעוד שמערך משתמש ב-length (שדה).
Difficulty 1/5 · 100 coins + a small bonus on first completion today
סינטקס שונה — סוגריים עבור String, ללא סוגריים עבור מערכים.