شما باید specification جاوا و بصورت دقیقتر پیاده سازیهای مختلفی که وجو داره رو چک کنید. ولی در مورد این مثال شما,
مقدار size توی متدهایی مثل add,remove,addall و ... ست میشه.
دوتا از فیلدهای کلاس
private transient Object[] elementData;
private int size;
و اولین بار مقداره size داخل یکی از سازنده ها ست میشه
public ArrayList(Collection<? extends E> c) {
elementData = c.toArray();
size = elementData.length;
// c.toArray might (incorrectly) not return Object[] (see 6260652)
if (elementData.getClass() != Object[].class)
elementData = Arrays.copyOf(elementData, size, Object[].class);
}