==
сравнивает ссылки на объекты в Java и не является исключением для объектов String
.
Для сравнения фактического содержимого объектов (в том числе String
) необходимо использовать equals
.
Если сравнение двух объектов String
с использованием ==
оказывается true
, это связано с тем, что объекты String
были интернированы, а виртуальная машина Java имеет несколько ссылки указывают на тот же экземпляр String
. Не следует ожидать сравнения одного объекта String
, содержащего то же содержимое, что и другой объект String
, используя ==
для оценки как true
.
У меня есть немного отличающаяся перспектива здесь. Хотя ответ @user43968 дает вероятное выравнивание, почему идентификационные данные необходимы для параллелизма, который действительно необходим? Я верю, не потому что ассоциативности самого бинарного оператора достаточно, чтобы позволить нам параллелизировать уменьшать задание.
, Учитывая выражение A op B op C op D
, ассоциативность гарантирует, что ее оценка эквивалентна (A op B) op (C op D)
, такова, что мы можем оценить sub выражения (A op B)
и (C op D)
параллельно и объединить результаты позже, не изменяя конечный результат. Например, с операцией сложения, начальное значение = 10, и L = [1, 2, 3], мы хотим вычислить 10 + 1 + 2 + 3 = 16. Мы должны быть хорошо, чтобы вычислить 10 + 1 = 11 и 2 + 3 = 5 параллельно и сделать 11 + 5 = 16 наконец.
единственная причина, почему Java требует, чтобы начальное значение было идентификационными данными, о которых я могу думать, состоит в том, потому что разработчики языка хотели сделать реализацию простой, и все параллелизировали sub симметричные задания. Иначе они должны были дифференцировать первое sub задание, которое принимает начальное значение, как введено по сравнению с другими sub заданиями, которые не делают. Теперь, они просто должны одинаково распределить начальное значение каждому sub заданию, которое является также "уменьшением" его собственным.
Однако это больше об ограничении реализации, которое не должно появиться пользователям языка IMO. Мое инстинктивное чувство говорит мне, что там должен существовать простая реализация, которая не требует, чтобы начальное значение было идентификационными данными.