В первом блоке кода вы объявляете строковый массив размером 2. Таким образом, он сразу определяется в памяти, и в цикле вы присваиваете значения этой ссылке, поэтому на каждом шаге цикла его значение изменяется, и оно ' будет добавлен в объект ArrayList
.
Во втором блоке кода внутри цикла вы инициализируете строковый массив, поэтому каждый раз, когда он создает новый объект массива в памяти, и все объекты будут иметь разные ссылки с различными значениями, добавленными к ним, которые будут переданы в ArrayList
объект.
Вот почему вы получаете разные значения здесь.