1. Курс в Java/Android
Занятие 3
Александр Русин
e-mail: alexander.rusin@gmail.com
Android Developer
2. Класс Object
java.lang.Object
public class Object
Конструктор:
Object()
Object - корень иерархии классов.
Каждый класс имеет Object как суперкласс.
Все объекты, включая массивы, реализуют
методы этого класса.
3. Методы класса Object
protected Object clone() // Создает и возвращает
копию этого объекта
protected void finalize() // Вызывается сборщиком
мусора когда нет больше ссылок на объект
Class getClass() // Возвращает класс во время
выполнения
int hashCode() // Возвращает hash код для объекта
void notify() // Возобновляет единичный поток,
который ожидает на объектном мониторе
4. Методы класса Object
void notifyAll() // Возобновляет все потоки, которые ожидают на
объектном мониторе
String toString() // Возвращает строковое представление объекта
void wait() // Остановка текущего потока пока другой поток не
вызовет notify() или notifyAll метод для этого объекта
void wait(long timeout) // Остановка текущего потока на время или
пока другой поток не вызовет notify() или notifyAll метод для этого
объекта
void wait(long timeout, int nanos) // Остановка текущего потока на
время или пока другой поток не вызовет notify() или notifyAll метод
для этого объекта
5. Метод equals()
Сравнивает два объекта и возвращает
истину, если они равны
Integer one = new Integer(1);
Integer anotherOne = new Integer(1);
if (one.equals(anotherOne)) {
System.out.println( objects are equal );
}
7. Метод equals()
Рефлексивность: для любого ненулевого x,
x.equals(x) вернет true;
Транзитивность: для любого ненулевого x,
y и z, если x.equals(y) и y.equals(z) вернет
true, тогда и x.equals(z) вернет true;
Симметричность: для любого ненулевого x
и y, x.equals(y) должно вернуть true, тогда и
только тогда, когда y.equals(x) вернет true.
8. Метод equals()
Integer a = new Integer(6);
Integer b = new Integer(6);
System.out.println(a == b); // false т.к. это
разные объекты с разными ссылками
System.out.println(a.equals(b)); // true, здесь
уже задействована логика сравнения
9. equals() класса Integer
public boolean equals(Object obj) {
if (obj instanceof Integer) {
return value == ((Integer)obj).intValue();
}
return false;
}
11. Метод hashCode()
public int hashCode() {
final int prime = 31;
int result = 1;
result = prime * result + (int) (id_client ^ (id_client >>> 32));
result = prime * result + ((name == null) ? 0 :
name.hashCode());
result = prime * result + ((address == null) ? 0 :
address.hashCode());
result = prime * result + (int) (group_id ^ (group_id >>> 32));
result = prime * result + status.hashCode();
return result;
}
13. ArrayList
●
Реализует интерфейс List.
●
Может менять свой размер во время
исполнения программы.
●
Элементы могут быть абсолютно любых
типов в том числе и null.
15. ArrayList(Добавление элементов)
list.add("0");
Внутри метода add(value) происходят следующие вещи:
1) проверяется, достаточно ли места в массиве для вставки нового элемента;
ensureCapacity(size + 1);
2) добавляется элемент в конец (согласно значению size) массива.
elementData[size++] = element;
17. ArrayList(Добавление элементов)
list.add(5, "100");
1. Проверяется, достаточно ли места в массиве для
вставки нового элемента.
2. Подготавливается место для нового элемента с
помощью System.arraycopy();
3. Перезаписывается значение у элемента с
указанным индексом.
18. ArrayList(Удаление элемента)
по индексу remove(index)
●
по значению remove(value)
●
list.remove(5);
1.Определяется какое количество элементов надо
скопировать
2.Копирутся элементы используя System.arraycopy()
3.Уменьшается размер массива и «забывается» про
последний элемент
19. ArrayList(Итог)
●
Быстрый доступ к элементам по индексу за время O(1);
●
Доступ к элементам по значению за линейное время
O(n);
●
Медленный, когда вставляются и удаляются элементы из
«середины» списка;
●
Позволяет хранить любые значения в том числе и null;
●
Не синхронизирован.