читать элементы ArrayList - PullRequest
       9

читать элементы ArrayList

0 голосов
/ 29 марта 2010

Почему выводится неверный вывод?

ArrayList<String> loc = new ArrayList<String>();

Этот массив хранит значение:

[topLeft, topLeft, topLeft, bottomLeft, topLeft, bottomLeft, topLeft, topLeft, Left, topLeft]

Первый индекс 0 = topLeft

if(loc.get(1)=="topLeft")
   System.out.println("same")

else {
   System.out.println("not same")
}

Эта программа выводит неверный вывод not same вместо same

Ответы [ 2 ]

3 голосов
/ 29 марта 2010

Используйте метод equals(Object), а не оператор ==, например loc.equals("topLeft")

Оператор == возвращает true, если две ссылки указывают на один и тот же объект в памяти. Метод равно (Object o) проверяет, являются ли два объекта эквивалентными, поэтому возвращает true, если две строки содержат только одинаковые символы в одинаковом порядке.

1 голос
/ 29 марта 2010

Сравнение строк выполняется путем вызова str1.equals(str2) вместо использования ==.

  • equals(..) сравнивает содержимое строк
  • == сравнивает ссылки, и они не совпадают.

Однако есть еще кое-что, что нужно знать. String объекты, которые инициализируются как литералы, т.е.

String str = "someString"

вместо сквозной конструкции (String str = new String("some")) - это все один и тот же объект. Для них == будет работать.

И, наконец, для любого String вызов intern() возвращает String, который является тем же объектом, что и все другие строки с таким же содержимым. (для получения дополнительной информации прочитайте документацию intern())

Но лучше всего использовать equals(), при этом будьте осторожны, если объект, к которому вы его вызываете (первая строка), не null.

...