#java #строки
Почему этот код выводит Index = 0 для b и s? import java.util.ArrayList; public class Arr { public static void main(String[] args) { ArrayListmyList = new ArrayList<>(); String s = new String(); myList.add(s); String b = new String(); myList.add(b); int idx = myList.indexOf(b); System.out.println("Index b=" + idx); int idx2 = myList.indexOf(s); System.out.println("Index s=" + idx2); } }
Ответы
Ответ 1
В методе ArrayList.indexOf() сравнение объектов реализовано следующим образом int indexOf(Object o) { for (int i = 0; i < size(); i++) { if (o == null) { if (get(i) == null) return i; } else { if (o.equals(get(i))) return i; } } return -1; } Т.к переменные a и b представляют собой пустые строки, то a.equals(b) == true Т.е., с точки зрения списка, в списке находятся два идентичных объекта. А значит метод indexOf возвращает индекс первого из них
Комментариев нет:
Отправить комментарий