Source: http://www.cs.utexas.edu/~scottm/ap/pasadena/ArraysAndArrayList-4Up.pdf