מה זאת אומרת "מערך דינאמי"?
א) ב-Java יש הרבה מחלקות Collection, אחת מהן היא ArrayList:
https://docs.oracle.com/javase/7/docs/api/java/util/ArrayList.html
 
זה חלק מהספרייה הסטנדרטית של Java וזה נותן לך מערך דינמי לחלוטין שגדל אוטומטית כל פעם שאתה מוסיף לו איבר, בלי שתצטרך להגדיל אותו ידנית לפני ההכנסה.
 
ב) ב-C, "מערך דינמי" הוא בד"כ זיכרון שמוקצה בזמן ריצה ע"י malloc.
לפי הגדרה זו, כל המערכים ב-Java דינמיים היות ואתה חייב להשתמש ב-new כדי לייצר מערך, ולא יכול להגדיר אותו סטטית כמו ב-C
 
הדבר היחיד מ-C שאין לו מקבילה ב-Java, לפחות כזו שאני יכול לחשוב עליה בשלוף, זה realloc, שבעצם מאגד הקצאה מחדש של זיכרון עם העתקת תוכן מאזור הזיכרון הקודם, אבל יש סיבה טובה ל-"חיסרון" הזה:
ניהול זיכרון ב-Java הוא ברובו אוטומטי, ולכן אין בזה צורך.
 
כל פעם שאתה צריך לטפל באוסף עצמים דינמי (כזה שגדל וקטן במהלך ריצת התוכנה), יש לך מגוון מחלקות מוכנות לשירותך.