Я думаю, что вас смущает то, что вы рассматриваете ArrayList как ArrayList объектов, а не как ArrayList ссылок на объекты.
ArrayList of Object представляет доступный для индекса список ссылки на объекты.
Для такой ссылки допустимо не ссылаться на реальный объект, а вместо этого быть "нулевым".
Следовательно, у вас есть пять ссылок "slots ", каждый со значением null.
Это не то же самое, что последовательность из четырех нулей или нулевых нулей.
Посмотрите на ваш исходный и примитивный массив строк - его длина равна пяти, а не нулю.
Или даже проще, когда у вас есть класс с полем типа Object, он по-прежнему занимает место, независимо от того, ссылается ли он на что-то или имеет значение null.В противном случае вы не сможете создать экземпляр класса и не будете нуждаться в его перераспределении, когда вы действительно назначаете что-то полю.