JavaRush /בלוג Java /Random-HE /מערכי Java
articles
רָמָה

מערכי Java

פורסם בקבוצה

מערכים

מערך הוא מבנה נתונים המאחסן ערכים מאותו סוג. ניתן לגשת לרכיב מערך בודד באמצעות אינדקס מספר שלם. לדוגמה, אם a הוא מערך של מספרים שלמים, אז הערך של הביטוי a[i] שווה למספר ה-i השלם במערך. מערכי Java - 1מערך מוכרז באופן הבא: ראשית, מצוין סוג המערך, כלומר סוג האלמנטים הכלולים במערך, ואחריו זוג סוגריים מרובעים ריקים, ולאחר מכן שם המשתנה. לדוגמה, הנה איך להכריז על מערך המורכב ממספרים שלמים:
int[] a;
עם זאת, הצהרה זו מכריזה רק על משתנה а, מבלי לאתחל אותו עם מערך בפועל. כדי ליצור מערך, עליך להשתמש באופרטור new.
int[] a = new int [100];
אופרטור זה יוצר מערך של 100 מספרים שלמים. האלמנטים של מערך זה ממוספרים מ-0 עד 99 (לא מ-1 עד 100). לאחר היצירה, ניתן למלא את המערך, למשל, באמצעות לולאה.
int[] а = new int[100];
for (int i = 0; i < 100; i++)
 a[i] = i; //Заполняет массив числами от 0 до 99
אם תנסה לגשת לאלמנט а [100](או כל אלמנט אחר שהאינדקס שלו נמצא מחוץ לטווח 0 עד 99) על ידי יצירת מערך של 100 אלמנטים, התוכנית תסתיים מכיוון שיתרחש חריג של אינדקס מערך מחוץ לטווח . כדי לספור את מספר האלמנטים במערך, השתמש בשיטת שם המערך .length. לדוגמה,
for (int i = 0; i < a.length; i++, System.out.println(a[i]));
לאחר יצירת מערך, אי אפשר לשנות את גודלו (אם כי ניתן, כמובן, לשנות את האלמנטים הבודדים שלו). אם אתה צריך לשנות את הגודל של מערך לעתים קרובות במהלך הפעלת התוכנית, עדיף להשתמש במבנה נתונים אחר הנקרא רשימת מערך. ניתן להכריז על מערך בשתי דרכים:
int[] a;
or
int a[];
רוב מתכנתי ג'אווה מעדיפים את הסגנון הראשון מכיוון שהוא מפריד בצורה ברורה יותר בין סוג המערך int [](מערך שלם) לשם המשתנה.

אתחולי מערך ומערכים ללא שם

ל- Java יש מתקן ליצירת מערך ולאתחול בו זמנית. הנה דוגמה למבנה תחבירי כזה:
int[] smallPrimes = {2, 3, 5, 7, 11, 13};
שימו לב שבמקרה זה אין צורך להשתמש באופרטור new. בנוסף, אתה יכול אפילו לאתחל מערך ללא שם:
new int[] {16, 19, 23, 29, 31, 37}
ביטוי זה מקצה זיכרון למערך חדש וממלא אותו במספרים שצוינו בסוגריים מסולסלים. במקרה זה, מספרם מחושב ובהתאם לכך נקבע גודל המערך. בנייה תחבירית זו נוחה לשימוש כדי לאתחל מחדש מערך מבלי ליצור משתנה חדש. למשל, הביטוי
smallPrimes = new int{17, 19, 23, 29, 31, 37};
הוא ביטוי מקוצר
int[] anonymous = {17, 19, 23, 29, 31, 37};
smallPrimes = anonymous;
אתה יכול ליצור מערך בגודל אפס. מערך כזה יכול להיות שימושי בעת כתיבת שיטה שמעריכה מערך שמתגלה כריק. מערך באורך אפס מוכרז באופן הבא:
new тип Элементов[]
שימו לב שמערך כזה אינו שווה ערך לאובייקט null.

העתקת מערכים

ניתן להעתיק מערך אחד לאחר, אך שני המשתנים יתייחסו לאותו מערך.
int[] luckyNumbers = smallPrimes;
luckyNumbers[5] = 12; //Теперь элемент smallPrimes[5]также equals 12
התוצאה מוצגת באיור. 3.1. אם אתה צריך להעתיק את כל הרכיבים של מערך אחד למשנהו, עליך להשתמש בשיטת arraycopy מהמחלקה System. השיחה שלו נראית כך:
System.arraycopy(from, fromlndex, to, tolndex, count);
המערך toחייב להיות גדול מספיק כדי להכיל את כל האלמנטים להעתקה. מערכי Java - 2
איור.3.1. העתקת מערך
לדוגמה, האופרטורים המוצגים להלן, שתוצאותיהם מוצגות באיור. 3.2, צור שני מערכים ולאחר מכן העתק את ארבעת האלמנטים האחרונים של המערך הראשון לשני. ההעתקה מתחילה מהמיקום השני במערך המקור, והאלמנטים המועתקים ממוקמים במערך היעד החל מהמיקום השלישי.
int[] smallPrimes = {2, 3, 5, 7, 11, 13};
int[] luckyNumbers = {1001, 1002, 1003, 1004, 1005, 1006, 1007};
System.аrrаусору(smallPrimes, 2, luckyNumbers, 3, 4);
for (int i = 0; i < luckyNumbers.length; i++)
System.out.println(i + ": " + luckyNumbers[i]);
ביצוע הצהרות אלו מניב את התוצאה הבאה.
0: 1001
1: 1002
2: 1003
3: 5
4: 7
5: 11
6: 13
מערכי Java - 3
אורז. 3.2. העתקת רכיבי מערך
מערך ב-Java שונה באופן משמעותי ממערך ב-C++. עם זאת, זה כמעט כמו מצביע למערך דינמי. זה אומר שהמפעיל
int[] a = new int[100]; //Java
שווה למפעיל
int* = new int[100]; //C++,
а не
int a[100]; //C++
ב-Java, []אופרטור ברירת המחדל בודק את טווח השינויים באינדקס. בנוסף, ל-Java אין אריתמטיקה של מצביע - לא ניתן להגדיל מצביע כדי לגשת לרכיב הבא של מערך. קישור למקור: מערכי Java
הערות
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION