Java Learning
18.8K subscribers
1.61K photos
1 video
3 files
990 links
№ 5079899194

Обучающий канал по Java

Ссылка для друга - https://t.iss.one/+ZEYYht6-46w5MDM6

По всем вопросам @mascarov_valentin

Реклама на бирже - https://telega.in/c/Java_per_month
Download Telegram
Абстрактные классы и интерфейсы в Java

В каких случаях стоит использовать абстрактный класс, а в каких — интерфейс? Многие разработчики не видят разницы между интерфейсами и абстрактными классами, но на самом деле между ними есть весьма существенное различие. Давайте разбираться, в чем между ними разница.

Смотреть статью
👍17😱1
#Вопросы_с_собеседования

Как одной строчкой преобразовать HashSet в ArrayList?

Ответ на картинке.
👍23
Примитивные типы данных в Java

• byte — целые числа в пределах -128 до 127, весит 1 байт;
• short — целые числа в пределах -32768 до 32767, весит 2 байта;
• int — целые числа -2147483648 до 2147483647, весит 4 байта;
• long — целые числа в пределах 9223372036854775808 до 9223372036854775807, весит 8 байтов;
• float — числа с плавающей запятой в пределах -3.4E+38 до 3.4E+38, весит 4 байта;
• double — числа с плавающей запятой в пределах -1.7E+308 до 1.7E+308, весит 8 байтов;
• char — одиночные символы в UTF-16, весит 2 байта;
• boolean значения true/false, весит 1 байт.
👍315😱2
#Вопросы_с_собеседования

Как вызывать default метод интерфейса в реализующем этот интерфейс классе?

Используя ключевое слово super вместе с именем интерфейса.
👍231
Дорогие подписчики, поздравляю вас всех с наступающим Новым годом!

Желаю, чтобы каждая минута приносила только радость, каждое событие было приятным и долгожданным, а каждая задумка заканчивалась успешным результатом!🎄🎄🎄🎄
Please open Telegram to view this post
VIEW IN TELEGRAM
👍7018🔥4🤔2😱2
Метод repeat()

Этот метод копирует содержимое строки заданное количество раз и возвращает результат в одной строке.

Синтаксис: String repeat(int count).
👍45
#вопросы_с_собеседований

Какие классы поддерживают чтение и запись потоков в компрессированном формате?

☕️ DeflaterOutputStream — компрессия данных в формате deflate.
☕️ Deflater — компрессия данных в формат ZLIB.
☕️ ZipOutputStream — потомок DeflaterOutputStream для компрессии данных в формат Zip.
☕️ GZIPOutputStream — потомок DeflaterOutputStream для компрессии данных в формат GZIP.
☕️ InflaterInputStream — декомпрессия данных в формате deflate.
☕️ Inflater — декомпрессия данных в формате ZLIB.
☕️ ZipInputStream — потомок InflaterInputStream для декомпрессии данных в формате Zip.
☕️ GZIPInputStream — потомок InflaterInputStream для декомпрессии данных в формате GZIP.
👍12😱4
Извлекаем год, месяц и день из даты

Чтобы извлечь год, LocalDate просто предоставляет метод getYear.

Аналогично, для извлечения месяца мы используем getMonthValue API. В отличие от календаря, месяцы в LocalDate индексируются с 1; для января это вернет 1.

Наконец, для извлечения дня у нас есть метод getDayOfMonth.
👍18😱2
Какой размер boolean типа в JVM?
Anonymous Quiz
33%
1 бит
46%
1 байт
3%
9 байт
18%
Не специфировано
👍21🤔11😱1😢1
Методы start и end

Выше представлен пример, в котором производится подсчет количества раз, когда в строке ввода встречается слово "кот".

Как видим, в данном примере используются границы слов с целью удостоверения в том, что буквы "c" "a" "t" не являются частью другого слова. Также отображаются определенные полезные сведения касательно нахождения совпадения в вводимой строке.

Метод start производит возврат начального индекса в последовательности, захваченной в данной группе в ходе предыдущей операции поиска совпадений, а end производит возврат индекса к последнему совпавшему символу, плюс один.
👍16
Преобразование массива в строку

Да да да, я знаю, что есть такие методы как Arrays.toString() и String.join() в Java. Но давайте все-таки рассмотрим еще один метод преобразования массива в строку

В этом примере мы используем Stream API, представленный в JDK 8. Arrays.strеam() принимает массив. Метод collect() возвращает результат после выполнения указанной операции над каждым элементом массива.

Здесь мы выполняем операцию Collectors.joining() над элементами массива, которая собирает элементы и объединяет их для возврата в виде целой строки.
👍18😢3
Конструктор по умолчанию в Java

Как и C++, Java автоматически создает конструктор по умолчанию, если нет конструктора по умолчанию или параметризованного конструктора, написанного программистом. А также как и в C++ конструктор по умолчанию автоматически вызывает родительский конструктор по умолчанию.

Но, в отличие от C++, конструктор по умолчанию в Java инициализирует члены класса значениями по умолчанию (числовые значения инициализируются как 0, логические значения инициализируются как false, а ссылки инициализируются как null).
👍27🔥1
Что такое ThreadLocal-переменная?

ThreadLocal - класс, позволяющий имея одну переменную, иметь различное её значение для каждого из потоков.

У каждого потока - т.е. экземпляра класса Thread - есть ассоциированная с ним таблица ThreadLocal-переменных. Ключами таблицы являются cсылки на объекты класса ThreadLocal, а значениями - ссылки на объекты, «захваченные» ThreadLocal-переменными, т.е. ThreadLocal-переменные отличаются от обычных переменных тем, что у каждого потока свой собственный, индивидуально инициализируемый экземпляр переменной. Доступ к значению можно получить через методы get() или set().

Например, если мы объявим ThreadLocal-переменную: ThreadLocal<Object> locals = new ThreadLocal<Object>();. А затем, в потоке, сделаем locals.set(myObject), то ключом таблицы будет ссылка на объект locals, а значением - ссылка на объект myObject. При этом для другого потока существует возможность «положить» внутрь locals другое значение.

Следует обратить внимание, что ThreadLocal изолирует именно ссылки на объекты, а не сами объекты. Если изолированные внутри потоков ссылки ведут на один и тот же объект, то возможны коллизии.

Так же важно отметить, что т.к. ThreadLocal-переменные изолированы в потоках, то инициализация такой переменной должна происходить в том же потоке, в котором она будет использоваться. Ошибкой является инициализация такой переменной (вызов метода set()) в главном потоке приложения, потому как в данном случае значение, переданное в методе set(), будет «захвачено» для главного потока, и при вызове метода get() в целевом потоке будет возвращен null.
👍14
#Вопросы_с_собеседования

Сколько времени займет получение элемента из связного списка? Из бинарного дерева поиска? Или из хэш-таблицы? А если в этих структурах будет миллион записей?

Из хэш-таблицы можно получить элемент за константное время, из бинарного дерева — за логарифмическое, из связного списка — за линейное. Количество элементов не влияет на асимптотику структуры данных, если всё идет как надо: в хэш-таблице либо нет, либо очень мало коллизий, а бинарное дерево сбалансировано. Иначе с ростом количества элементов производительность будет только уменьшаться.
👍12
#Вопросы_с_собеседования

Для чего нужен Component Scan?

Если вы понимаете как работает Component Scan, то вы понимаете Spring

Первый шаг для описания Spring Beans это добавление аннотации — @Component, или @Service, или @Repository.

Однако, Spring ничего не знает об этих бинах, если он не знает где искать их. То, что скажет Spring где искать эти бины и называется Component Scan. В @ComponentScan вы указываете пакеты, которые должны сканироваться.

Spring будет искать бины не только в пакетах для сканирования, но и в их подпакетах.
👍26
Что будет выведено в консоль в первую очередь?
Anonymous Quiz
24%
Ошибка компиляции
16%
Grandpa went fishing
15%
Daddy went to the garage
16%
I went school
29%
Ничего
👍14😢2
#Вопросы_с_собеседования

Почему в некоторых интерфейсах вообще не определяют методов?

Это так называемые маркерные интерфейсы. Они просто указывают что класс относится к определенному типу.

Примером может послужить интерфейс Clonable, который указывает на то, что класс поддерживает механизм клонирования.
👍17🤔3😱2
😱2🤔1