3.8.6. מערכים
מערכים ב-Java הם אובייקטים, כלומר הם
מוקצים על הערימה ולא על המחסנית.
גודל מערך הינו קבוע ואיננו יכול להשתנות
מרגע שהוגדר. גודל המערך ניתן לנו על ידי השדה הקבוע length הנקבע בעת יצירת המערך.
דוגמא לאתחול מערך של אובייקטים:
Animal[] arr; //
nothing yet …
arr = new
Animal[4]; // only array of pointers
for(int i=0 ; i
< arr.length ; i++)
arr[i] = new
Animal();
// now we have a
complete array
יש ב-Java הבדל בין אתחול מערך של
משתנים בסיסיים לבין מערך המכיל אובייקטים של מחלקות.
לולאת ה-for שהצגנו תידרש רק במקרה השני.
איברי המערך של טיפוס נתונים פשוט
מאותחלים תמיד ל-0 במקרה של char או מספר, ו-false עבור משתנה מסוג boolean.
איברי מערך מסוג אובייקטים מאותחלים ל-null עם יצירת המערך.
העתקת מערכים ב-Java איננה יכולה להתבצע בעזרת
האופרטור =, כפי שהקוד הבא מנסה לעשות:
int vec1[] =
{1,2,3};
int vec2[] =
{8,7,6,5};
vec1 = vec2; //
Won't copy the array!
וזאת מכיוון ששורות אלו ייגרמו ששני
המשתנים יצביעו אל אותו מערך, ולא להעתקת תוכנו של המערך.
העתקת תוכן של מערך נעשית על ידי
פונקציה שבאה כחלק מ-Java, והיא arraycopy.
השיטה arraycopy מוגדרת כשיטה סטטית במחלקה System:
public static void
arraycopy(Object src,
int src_position,
Object dst,
int dst_position,
int length);
דוגמא לשימוש בפונקציה:
int []vec1 =
{1,2,3,4,5};
int []vec2 = new
int[vec1.length];
System.arraycopy(vec1,
0, vec2, 0, vec1.length);
xss hack
אני רוצה שתעזור לי ב xss אשמח לתשובה