зачем писать 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));
}