#java #строки
Почему этот код выводит Index = 0 для b и s?
import java.util.ArrayList;
public class Arr {
public static void main(String[] args) {
ArrayList myList = 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 возвращает индекс первого из них
Комментариев нет:
Отправить комментарий