К не статической переменной нельзя обратиться без создания объекта.
К статической можно обратиться, так как она принадлежит классу.
Суть статической переменной в том, что она едина на все экземпляры класса.
Если она не статическая, то при каждом создании newSolution().method3();
создается новый экземпляр класса, а переменная по умолчанию =0.
Соответственно,>1 она никогда не станет, вот и уходит в бесконечный цикл.
publicstaticArrayList<Cat> cats =newArrayList<Cat>();
и String[] list =newString[10] это разные массивы классы Arraylist и Array// где ArrayList<Cat> - тип, new ArrayList<Cat>() новый объект// добавить в массив cats.add(this);
класс ArrayList(списочный массив), который выполнял ту же работу,
что и Array(массив), но мог изменять свой размер.ClassArrayList
использует get, set и add методы