Serializable, serialVersionUID
Классы, чьи объекты подвергаются сериализации/десериализации должны реализовывать marker интерфейс Serializable (и иметь статическое поле serialVersionUID для указании при сериализации, с какой версией класса данный объект был сериализован. Если serialVersionUID из сериализованного представления не совпадает c serialVersionUID класса «на том конце провода» — то кидается exception)
На практике, уже довольно редко используется, т.к тем же Jackson/GSON не обязательно наличие данного интерфейса для сериализации
Классы, чьи объекты подвергаются сериализации/десериализации должны реализовывать marker интерфейс Serializable (и иметь статическое поле serialVersionUID для указании при сериализации, с какой версией класса данный объект был сериализован. Если serialVersionUID из сериализованного представления не совпадает c serialVersionUID класса «на том конце провода» — то кидается exception)
На практике, уже довольно редко используется, т.к тем же Jackson/GSON не обязательно наличие данного интерфейса для сериализации
👍21
Что будет выведено на экран?
Anonymous Quiz
9%
5
40%
12
8%
0
9%
Ошибка времени выполнения
35%
Ошибка компиляции
👍24💔5🔥3🤬3
Какой будет результат компиляции и выполнения данного кода?
Anonymous Quiz
6%
10
15%
11
11%
12
36%
17
18%
18
15%
Ошибка времени выполнения
👍21🎉7
try-with-resources. AutoCloseable
try-with-resources — краткая замена стандартному try..catch..finally. Закрывает ресурс после выхода из секции try-with-resources. Ресурс должен имплементить интерфейс AutoCloseable.
«Ресурс» в данном контексте — это класс, представляющий cобой соединение/cокет/файл/поток
try-with-resources — краткая замена стандартному try..catch..finally. Закрывает ресурс после выхода из секции try-with-resources. Ресурс должен имплементить интерфейс AutoCloseable.
«Ресурс» в данном контексте — это класс, представляющий cобой соединение/cокет/файл/поток
try (InputStream is = new FileInputStream("/path/to/file.txt")) {
...
}👍23
👍27💔7🎉3
Отличие checked-exception/unchecked-exception. Error, Exception, RuntimeException
• Checked exceptions (проверяемые исключения). В JDK представлены классом Exception. Исключения, которые нельзя проигнорировать, их обязательно нужно обрабатывать, либо специфицировать в сигнатуре метода, для обработки выше. Как правило, считаются дурным тоном, т.к код со мн-вом конструкций try..catch плохо читабелен, к тому же добавление новых пробрасываемых исключений в сигнатуре метода может сломать контракт вызова у пользователей данного метода.
• Unchecked exceptions (непроверяемые исключения). В JDK это класс RuntimeException. Можно игнорировать, не требуют обработки через try..catch, или указания в сигнатуре через throws. Минус такого подхода — у вызывающей стороны нет никакого понимания, как обрабатывать ситуацию, когда под капотом «рванет»
• Error — ошибки, кидаемые JVM в результате нехватки памяти (OutOfMemoryError), переполнения стэка (StackOverflowError) и.т.д
• Checked exceptions (проверяемые исключения). В JDK представлены классом Exception. Исключения, которые нельзя проигнорировать, их обязательно нужно обрабатывать, либо специфицировать в сигнатуре метода, для обработки выше. Как правило, считаются дурным тоном, т.к код со мн-вом конструкций try..catch плохо читабелен, к тому же добавление новых пробрасываемых исключений в сигнатуре метода может сломать контракт вызова у пользователей данного метода.
• Unchecked exceptions (непроверяемые исключения). В JDK это класс RuntimeException. Можно игнорировать, не требуют обработки через try..catch, или указания в сигнатуре через throws. Минус такого подхода — у вызывающей стороны нет никакого понимания, как обрабатывать ситуацию, когда под капотом «рванет»
• Error — ошибки, кидаемые JVM в результате нехватки памяти (OutOfMemoryError), переполнения стэка (StackOverflowError) и.т.д
👍28🔥1🤔1🤩1
@javalib - telegram канал с самым большим разнообразием контента для Java программистов.
Каждый день публикуем ответы на самые актуальные вопросы🔥 А также делимся лучшими книгами, интересными статьями и многим другим.
Присоединяйся, чтобы не пропустить всё самое свежее!
Каждый день публикуем ответы на самые актуальные вопросы🔥 А также делимся лучшими книгами, интересными статьями и многим другим.
Присоединяйся, чтобы не пропустить всё самое свежее!
👍6🔥2⚡1
Каким будет вывод после выполнения данной программы?
Anonymous Quiz
28%
A action
32%
B action
32%
Код не скомпилируется
9%
Ошибка во время выполнения
👍23
Какие бывают типы памяти в Java?
В Java существует два вида памяти - heap и stack. Каждый из них хранит свой вид данных, имеет свою структуру и работает по своей схеме. Heap выделяет память под объекты и JRE классы, stack в свою очередь хранит ссылки на объекты и примитивы.
В Java существует два вида памяти - heap и stack. Каждый из них хранит свой вид данных, имеет свою структуру и работает по своей схеме. Heap выделяет память под объекты и JRE классы, stack в свою очередь хранит ссылки на объекты и примитивы.
👍32🤬1
Что будет выведено на консоль в результате выполнения следующего кода?
Anonymous Quiz
16%
1
29%
2
47%
Ошибка компиляции
7%
Ошибка времени выполнения
👍17🥱4🤬1
В чем разница между heap и stack?
Heap используется всеми частями приложения, в то время как stack используется лишь главным потоком выполнения программы.
Каждый раз когда мы создаем объект(практически всегда используя ключевое слово new) - этот объект хранится в heap, а в stack хранится ссылка на этот объект:
Stack - упорядоченная структура и работает по схеме LIFO(Last-In-First-Out). у heap весь доступ к объектам происходит по ссылкам из stack.
Heap в разы больше stack, stack работает быстрее благодаря структуре, stack "живет" короткий промежуток времени, в то время как heap "живет" весь "жизненный цикл" программы.
Heap используется всеми частями приложения, в то время как stack используется лишь главным потоком выполнения программы.
Каждый раз когда мы создаем объект(практически всегда используя ключевое слово new) - этот объект хранится в heap, а в stack хранится ссылка на этот объект:
Person person = new Person();тут мы создаем новый объект Person(), после чего он сразу же помещается в heap, а person становится ссылкой на этот объект и хранится в stack.
Stack - упорядоченная структура и работает по схеме LIFO(Last-In-First-Out). у heap весь доступ к объектам происходит по ссылкам из stack.
Heap в разы больше stack, stack работает быстрее благодаря структуре, stack "живет" короткий промежуток времени, в то время как heap "живет" весь "жизненный цикл" программы.
👍35🤬1
Что произойдёт при компиляции данного кода?
Anonymous Quiz
24%
Ошибка компиляции в строке 2
11%
Ошибка компиляции в строке 7
16%
Ошибка компиляции в строке 10
8%
Ошибка компиляции в строке 15
7%
Ошибка компиляции в строке 17
34%
Код скомпилируется без ошибок
👍13🤬1🍌1
Heap имеет структуру пирамиды. Это означает что самый большой элемент всегда будет занимать самую высокую позицию. Иллюстрация приведена на рисунке.
Вставляемый новый узел помещается в конец пирамиды. Но согласно условия что дочерний узел не может быть больше родительского, идет проверка с родительским узлом. Если новый элемент меньше - операция вставки закончена, если нет - новый элемент меняется местами с родительским, до момента пока родительского узла не останется(либо родительский элемент не будет больше дочернего).
Благодаря своей пирамидной структуре(если угодно - структура бинарного дерева) вставка/удаление элемента происходит за время O(logN).
Вставляемый новый узел помещается в конец пирамиды. Но согласно условия что дочерний узел не может быть больше родительского, идет проверка с родительским узлом. Если новый элемент меньше - операция вставки закончена, если нет - новый элемент меняется местами с родительским, до момента пока родительского узла не останется(либо родительский элемент не будет больше дочернего).
Благодаря своей пирамидной структуре(если угодно - структура бинарного дерева) вставка/удаление элемента происходит за время O(logN).
👍29🤩3🔥2❤1👏1
Что выведет данный код?
Anonymous Quiz
46%
21435
27%
212435
6%
122345
12%
12435
9%
Ошибка компиляции
👍20🌭3🤬2