зачем писать toString в 17 строке кода?
public static void main(String[] args) {
Cat[] cats = new Cat[4];
cats[0] = new Cat("Томас");
cats[1] = new Cat("Бегемот");
cats[2] = new Cat("Филипп Маркович");
cats[3] = new Cat("Пушок");
cats[1] = null;
for (int i = 2; i < cats.length-1; i++) {
//перемещаем элементы к началу, чтобы пустая ячейка оказалась в конце
cats[i-1] = cats[i];
cats[i] = null;
}
System.out.println(Arrays.toString(cats));
}