Это связано с моим предыдущим ответом ( ссылка на вопрос ; обязательно проверьте и первую редакцию), поэтому я частично ответственен за путаницу.
Давайте вернемся назад и рассмотрим следующий фрагмент:
char[] arr = new char[3];
int index;
index = 0;
arr[index] = 'A';
arr[index+1] = 'B';
arr[index+2] = 'C';
System.out.println(arr); // "ABC"
index = 0;
arr[index++] = '1';
arr[index++] = '2';
arr[index++] = '3';
System.out.println(arr); // "123"
В первой части фрагмента index
остается прежним, и мы вручную пишем index+1
, +2
и т. Д. По мере необходимости.Во втором фрагменте мы просто используем index++
.Оба метода «работают» при назначении элементов в массив при увеличении индексов, но, возможно, ++
немного «лучше», потому что программист не должен вручную делать приращение.Кроме того, версия index++
позволяет мгновенно изменить порядок операторов, тогда как явная версия index+n
потребует перенумерации.
В зависимости от того, что необходимо сделать, существуют лучшие альтернативы любому из вышеперечисленных,конечно.
В самом идеальном сценарии вы можете использовать специальный синтаксис инициализатора массива:
char[] arr = { 'X', 'Y', 'Z' };
System.out.println(arr); // "XYZ"
В операторе пост-инкремента
Возможно, этофрагмент кода проливает некоторый свет:
char[] arr = { '1', '2', '3' };
int index = 0;
System.out.println(index); // "0"
arr[index++] = 'X';
System.out.println(index); // "1"
System.out.println(arr[index]); // "2"
System.out.println(arr[index-1]); // "X"
System.out.println(arr[0]); // "X"
Средняя часть является ключом к пониманию проблемы: после назначения index
увеличивается на 1. Именно поэтому arr[index]
равно 2
,что является старым значением arr[1]
.Новое значение X
правильно присвоено arr[0]
, или, в более общем смысле, arr[index-1]
сразу после назначения.
Ссылки
Связанные вопросы
Эти вопросы относятся к оператору постинкремента: