Java Developer – Telegram
Java Developer
15.7K subscribers
1.86K photos
141 videos
2 files
2.09K links
Авторский канал действующего разработчика — интересные заметки, новые технологии, библиотеки и фреймворки

Сотрудничество: @bape_ads
Прайс: @bape_media

РКН: https://clck.ru/3GHfTK

Реклама на бирже: https://telega.in/c/java_tg
Download Telegram
👩‍💻 Виды отношений между объектами

Реализация — класс А определяет методы, объявленные интерфейсом B. Объекты А можно рассматривать через интерфейс B. Класс А зависит от B.

Наследование — класс А наследует интерфейс и реализацию класса B, но может ее переопределить. Объекты А можно рассматривать через интерфейс класса B. Класс А зависит от B.

Зависимость — класс А могут затронуть изменения в классе B.

Агрегация — объект А знает об объекте B и состоит из него. Класс А зависит от B.

Ассоциация — объект А знает об объекте B. Класс А зависит от B.

Композиция — объект А знает об объекте B, состоит из него и управляет его жизненным циклом. Класс А зависит от B.


➡️ Java Developer
Please open Telegram to view this post
VIEW IN TELEGRAM
👩‍💻 Класс-обертка в Java (wrapper class)

Класс-обертка (wrapper class) — это класс, который обеспечивает возможность использования примитивных типов данных как объектов. Каждый примитивный тип данных в Java имеет соответствующий класс-обертку: byte - Byte, short - Short, int - Integer, long - Long, float - Float, double - Double, boolean - Boolean и char - Character.

Классы-обертки используются, например, при работе с объектами коллекций, такими как ArrayList, где примитивные типы не могут быть использованы (список может хранить только объекты).

В этом примере мы создаем объекты классов-оберток для примитивных типов int, double, char и выводим значения этих объектов с помощью метода println().

➡️ Java Developer
Please open Telegram to view this post
VIEW IN TELEGRAM
👩‍💻 Вложенные классы

Вложенный класс (Nested class) — класс, который определен внутри другого класса. Вложенный класс должен создаваться только для того, чтобы обслуживать обрамляющий его класс. Если вложенный класс оказывается полезен в каком-либо ином контексте, он должен стать классом верхнего уровня. Вложенные классы имеют доступ ко всем (в том числе приватным) полям и методам внешнего класса, но не наоборот. Из-за этого разрешения использование вложенных классов приводит к некоторому нарушению инкапсуляции.

Существуют четыре категории вложенных классов:

Static nested class (Статический вложенный класс);

Member inner class (Простой внутренний класс);

Local inner class (Локальный класс);

Anonymous inner class (Анонимный класс).

➡️ Java Developer
Please open Telegram to view this post
VIEW IN TELEGRAM
Что выведет код сверху?

Ответ: Not equal. Переменная real не равна самой себе. Арифметика с плавающей запятой реализована в соответствии со стандартом IEEE 754, который требует возвращения специального значения «NaN» (от английского “Not a Number” – не число), когда ноль делится на ноль. В спецификации также указано, что NaN не равно никакому значению с плавающей запятой, включая само себя.

➡️ Java Developer
Please open Telegram to view this post
VIEW IN TELEGRAM
1
👩‍💻 Конструктор по умолчанию

Если у какого-либо класса не определить конструктор, то компилятор сгенерирует конструктор без аргументов — так называемый «конструктор по умолчанию».

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

➡️ Java Developer
Please open Telegram to view this post
VIEW IN TELEGRAM
Вопрос с собеседования

Могут ли нестатические методы перегрузить статические?

Ответ: Да. В итоге получится два разных метода. Статический будет принадлежать классу и будет доступен через его имя, а нестатический будет принадлежать конкретному объекту и доступен через вызов метода этого объекта.

➡️ Java Developer
Please open Telegram to view this post
VIEW IN TELEGRAM
👩‍💻 Выполнение консольных команд

Java позволяет выполнять консольные команды прямо из кода, используя класс Runtime. Очень важно не забывать об обработке исключений.

В примере на картинке мы открываем файл PDF через терминал Java на Linux.

➡️ Java Developer
Please open Telegram to view this post
VIEW IN TELEGRAM
Вопрос с собеседования

Какое начальное количество корзин в HashMap?

Ответ: В конструкторе по умолчанию — 16, используя конструкторы с параметрами можно задавать произвольное начальное количество корзин.

➡️ Java Developer
Please open Telegram to view this post
VIEW IN TELEGRAM
👩‍💻 Класс RandomAccessFile

RandomAccessFile — класс, который обеспечивает чтение и запись данных в произвольном месте файла. Он не является частью иерархии InputStream или OutputStream. Это полностью отдельный класс, имеющий свои собственные (в большинстве своем native) методы.

RandomAccessFile имеет следующие специфические методы:

getFilePointer() для определения текущего местоположения в файле;

seek() для перемещения на новую позицию в файле;

length() для выяснения размера файла;

setLength() для установки размера файла;

skipBytes() для того, чтобы попытаться пропустить определённое число байт;

getChannel() для работы с уникальным файловым каналом, ассоциированным с заданным файлом;

Методы для выполнения обычного и форматированного вывода из файла (read(), readInt(), readLine(), readUTF() и т.п.);

Методы для обычной или форматированной записи в файл с прямым доступом (write(), writeBoolean(), writeByte() и т.п.).

➡️ Java Developer
Please open Telegram to view this post
VIEW IN TELEGRAM
2
Что выведет код сверху?
Anonymous Quiz
23%
-2
33%
-1
36%
0
8%
2
👩‍💻 Подчеркивание в числовых литералах

В Java SE 7 и более поздних версиях символы подчеркивания могут использоваться в числовых литералах без появления каких-либо предупреждений или ошибок в выводе.

➡️ Java Developer
Please open Telegram to view this post
VIEW IN TELEGRAM
Вопрос с собеседования

Как получить доступ к переопределенным методам родительского класса?

Ответ: С помощью ключевого слова super мы можем обратиться к любому члену родительского класса — методу или полю, если они не определены с модификатором private.

➡️ Java Developer
Please open Telegram to view this post
VIEW IN TELEGRAM
👩‍💻 Режимы доступа к файлу у класса RandomAccessFile

"r" — открывает файл только для чтения. Запуск любых методов записи данных приведет к выбросу исключения IOException.

"rw" — открывает файл для чтения и записи. Если файл еще не создан, то осуществляется попытка создать его.

"rws" — открывает файл для чтения и записи подобно "rw", но требует от системы при каждом изменении содержимого файла или метаданных синхронно записывать эти изменения на физический носитель.

"rwd" — открывает файл для чтения и записи подобно "rws", но требует от системы синхронно записывать изменения на физический носитель только при каждом изменении содержимого файла. Если изменяются метаданные, синхронная запись не требуется.

➡️ Java Developer
Please open Telegram to view this post
VIEW IN TELEGRAM
Что выведет код сверху?
Anonymous Quiz
36%
1
31%
2
33%
Ошибка компиляции
👩‍💻 Символьная ссылка

Символьная (символическая) ссылка — специальный файл в файловой системе, в котором, вместо пользовательских данных, содержится путь к файлу, который должен быть открыт при попытке обратиться к данной ссылке (файлу). Целью ссылки может быть любой объект: другая ссылка, файл, каталог или даже несуществующий файл.

Символьные ссылки используются для более удобной организации структуры файлов на компьютере, так как:

Позволяют для одного файла или каталога иметь несколько имён и различных атрибутов;

Свободны от некоторых ограничений, присущих жёстким ссылкам (последние действуют только в пределах одной файловой системы (одного раздела) и не могут ссылаться на каталоги).

➡️ Java Developer
Please open Telegram to view this post
VIEW IN TELEGRAM
👩‍💻 Узнаем продолжительность аудио-файла

Пример на картинке, требуется заменить путь к вашему аудио файлу.

➡️ Java Developer
Please open Telegram to view this post
VIEW IN TELEGRAM
Вопрос с собеседования

Какой метод HTTP не является неизменяемым?

Ответ: HTTP метод называется неизменяемым, если он на один и тот же запрос всегда возвращает одинаковый результат. HTTP методы GET, PUT, DELETE, HEAD и OPTIONS являются неизменяемыми, поэтому необходимо реализовывать приложение так, чтобы эти методы возвращали одинаковый результат постоянно.

➡️ Java Developer
Please open Telegram to view this post
VIEW IN TELEGRAM