Стек .add() или .push()???

Чтобы узнать, в чем разница между ними и как они работают, нам нужно взглянуть на классы держателей.

Имейте в виду, что Stack класс расширяет класс Vector класс. Игнорируйте другие классы, если хотите.

Хорошо, предположим, что у нас есть это в основном методе

Stack<Object> s = new Stack<Object>();

пуш();

Он вызывает метод push в классе Stack, который выглядит так…

Затем он вызывает public addElement() в классе Vector и возвращает элемент, который мы только что отправили. Чтобы иметь возможность сделать это, например

Object obj = s.push(new Object());

Как видите, он вызывает другой метод в классе Vector.

Если вам интересно, что делает synchronized, он блокирует объект, в данном случае метод, от любых общих ресурсов. Обычно это происходит из-за многопоточности.

Наконец, он увеличивает размер стека и проталкивает элемент.

с.добавить();

Он вызывает add() в классе стека.

это выглядит знакомо???

Да, это.

Это то же самое, что и addElement(), который вызывает s.push(), за исключением того, что он всегда возвращает true.

Затем он вызывает метод add() в векторном классе . "Изображение 2"

Заключение

s.push() -› общий addElement() -› закрытый add()всегда

но

s.add() -> общедоступный add() -> частный add()

Это всего лишь вызов метода... В обоих случаях они приводят к вызову приватного метода .add(), который добавляет элемент в стек.

Единственная разница между этими вызовами — возвращаемые значения.

s.push() вернуть объект, который вы отправляете.

s.add()всегда возвращает true.

Спасибо за чтение