Java Learning
19.5K subscribers
1.6K photos
1 video
3 files
972 links
№ 5079899194

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

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

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

Реклама на бирже - https://telega.in/c/Java_per_month
Download Telegram
👍4
👍1
JIT-оптимизация

Java-код обрабатывается с помощью JIT-компиляции: сначала транслируется в платформонезависимый байт-код, а уже после этого в машинный код. При этом оптимизируется все, что возможно, и разработчик может помочь компилятору создать максимально эффективную программу.

В качестве примера взглянем на две простые операции:
// 1
n += 2 * i * i;

// 2
n += 2 * (i * i);

Измерим время выполнения каждой из них. Запустив код с картинки несколько раз, получим подобные цифры, отображающие время выполнения:

2 * (i * i) | 2 * i * i
0.5183738 | 0.6246434
0.5298337 | 0.6049722
0.5308647 | 0.6603363
0.5133458 | 0.6243328
0.5003011 | 0.6541802

Закономерность очевидна: группировка переменных с помощью скобок ускоряет работу программы. Это происходит из-за генерации более эффективного байт-кода при умножении одинаковых значений.

Подробнее об этом эксперименте вы можете почитать здесь.
👍441
#Вопросы_с_собеседования

В чем разница между классами java.util.Collection и java.util.Collections?

java.util.Collections(подробнее можно почитать здесь) - набор статических методов для работы с коллекциями.

java.util.Collection(подробнее можно почитать здесь) - один из основных интерфейсов Java Collections Framework.
👍20
Log4j

Log4j – библиотека, взявшая на себя обязанности по избавлению разработчика от лишней головной боли при организации логирования в приложении. Она инкапсулирует почти все операции (прямая работа с файлами логов, оформление логов, разграничение уровней логирования), предоставляя разработчику удобный и минималистичный интерфейс взаимодействия с логами.

После подключения и быстрой настройки библиотеки работа с логами будет сведена к коду на картинке. После выполнения кода в лог будет записано что-то вроде:

2022-02-05 15:00 DEBUG MainClass:5 — Сообщение об баге

2022-02-05 15:00 ERROR MainClass:6 — Сообщениe об ошибке

2022-02-05 15:00 WARN MainClass:7 — Предупреждение

2022-02-05 15:00 INFO MainClass:8 — Информация

Подробнее о библиотеке можно узнать на сайте разработчика.
👍17
#Вопросы_с_собеседования

Чем различаются Enumeration и Iterator?

Хотя оба интерфейса и предназначены для обхода коллекций между ними имеются существенные различия:
• с помощью Enumeration нельзя добавлять/удалять элементы;
• в Iterator исправлены имена методов для повышения читаемости кода (Enumeration.hasMoreElements() соответствует Iterator.hasNеxt(), Enumeration.nextElement() соответствует Iterator.nеxt() и т.д);
• Enumeration присутствуют в устаревших классах, таких как Vector/Stack, тогда как Iterator есть во всех современных классах-коллекциях.
👍24
👍13😱7
☕️ Основы Java: выделяем 4 разных роли классов

Java – объектно-ориентированный язык, и если спросить, какую роль в нем играют классы, первым в голову приходит создание объектов. Выделим ещё три важных роли этой конструкции языка, помимо самой очевидной.

Смотреть статью
👍18
💡 libgdx/libgdx

Один из самых популярных Java-репозиториев на Github, в котором вы сможете найти полноценный фреймворк для гейм-девелопмента, написанный в основном на Java (некоторые компоненты на C и C++).

Работа основана на платформонезависимом OpenGL, поэтому libgdx поддерживает практически все существующие платформы и позволяет легко переносить проект между ними.
👍9
Язык программирования Java - зачем его учить и что на нем пишут

0:00 Вступление
0:10 Какие из этих программ написаны на Java?
0:33 История создания Java
1:34 Как применяется Java
3:10 Популярные фреймворки
4:37 Архитектура приложений - виртуальная машина, управление памятью
6:40 Типизация в Java
7:30 Другие особенности Java
8:05 Зарплаты разработчиков на Java
9:01 Мой опыт работы с Java
12:05 Как начать писать на Java
12:40 Ответы на вопрос из начала видео

Смотреть видео
👍27
Что выведет код сверху?
Anonymous Quiz
14%
48
6%
4 8
56%
12
24%
Error
👍8
Метод concat()

Возвращает строку со значением строки, переданной в метод и приложенной к концу строки, используемой для вызова этого метода.

Проще говоря метод concat() в Java объединяет строки, путем добавления одной строки в конец к другой.
👍28
☕️ Полный курс по Java ☕️

# 1 (00:00:00) Руководство по Java для начинающих ☕️
# 2 (00:20:26) переменные
# 3 (00:32:58) поменять местами две переменные 💱
# 4 (00:36:42) пользовательский ввод ⌨️
# 5 (00:44:40) выражения 🧮
# 6 (00:49:13) Введение в графический интерфейс 🚩
# 7 (00:55:01) Урок математики 📐
# 8 (01:01:08) случайные числа 🎲
# 9 (01:05:39) операторы if 🚧
# 10 (01:11:51) переключатели ⬇️
# 11 (01:16:36) логические операторы ❗️
# 12 (01:24:33) цикл while 🔄
# 13 (01:28:13) для цикла
# 14 (01:32:23) вложенные циклы
# 15 (01:38:28) массивы 🚗
# 16 (01:44:54) 2D-массивы 🚚
# 17 (01:52:59) Строковые методы 💬
# 18 (01:59:18) классы-оболочки 🎁
# 19 (02:06:30) ArrayList 🧾
# 20 (02:11:02) 2D ArrayList 📜
# 21 (02:17:35) для каждой петли 🔃
# 22 (02:21:20) методы 📞
# 23 (02:32:24) перегруженные методы ☎️
# 24 (02:38:03) printf 🖨
# 25 (02:49:25) последнее ключевое слово ⛔️
# 26 (02:51:24) объекты (ООП) ☕️
# 27 (03:01:36) конструкторы 👷
# 28 (03:11:36) область видимости переменной 🌍
# 29 (03:16:39) перегруженные конструкторы 🍕
# 30 (03:24:04) метод toString 🎉
# 31 (03:30:08) массив объектов 🍱
# 32 (03:35:48) передача объекта 🏬
# 33 (03:40:27) статическое ключевое слово ⚡️
# 34 (03:48:10) наследование 👪
# 35 (03:53:45) переопределение метода 🙅‍♂️
# 36 (03:57:33) супер ключевое слово 🦸‍♂️
# 37 (04:05:06) абстракция 👻
# 38 (04:10:01) модификаторы доступа 🔒
# 39 (04:19:39) инкапсуляция 💊
# 40 (04:27:30) копировать объекты 🖨
# 41 (04:34:03) интерфейс 🦅
# 42 (04:41:19) полиморфизм 🏁
# 43 (04:46:55) динамический полиморфизм
# 44 (04:55:13) обработка исключений ⚠️
# 45 (05:02:31) Класс файла 📁
# 46 (05:09:15) FileWriter (запись в файл) 📝
# 47 (05:12:30) FileReader (чтение файла) 📖
# 48 (05:17:04) аудио 🔊
# 49 (05:27:34) Графический интерфейс 🖼
# 50 (05:39:41) ярлыки 👨‍💻
# 51 (05:57:01) панели 🟥
Кнопки # 52 (06:09:57) 🛎
# 53 (06:23:50) BorderLayout 🧭
# 54 (06:34:53) FlowLayout 🌊
# 55 (06:42:21) GridLayout 🔳
# 56 (06:47:12) LayeredPane 📚
# 57 (06:55:20) открыть новое окно графического интерфейса 🗔
# 58 (07:05:39) JOptionPane 🛑
# 59 (07:17:30) текстовое поле 📛
# 60 (07:27:01) флажок ✔️
# 61 (07:35:23) переключатели 🔘
# 62 (07:45:42) поле со списком 📑
# 63 (07:55:37) слайдер 🌡
# 64 (08:08:08) индикатор выполнения 📊
# 65 (08:18:46) строка меню 🗄
# 66 (08:33:27) выберите файл 🔎
# 67 (08:42:25) выбор цвета 🎨
# 68 (08:48:45) KeyListener 🚀
# 69 (09:01:21) MouseListener 🖱
# 70 (09:12:32) перетащить 👈
# 71 (09:26:48) привязки клавиш ⌨️
# 72 (09:38:57) 2D графика 🖍
# 73 (09:58:33) 2D анимация 👾
# 74 (10:15:14) дженерики
# 75 (10:36:43) сериализация 🥣
# 76 (10:57:21) TimerTask ⌚️
# 77 (11:08:36) темы 🧵
# 78 (11:24:01) многопоточность 🧶
# 79 (11:38:44) пакеты 📦
# 80 (11:42:49) скомпилировать / запустить командную строку 💽
# 81 (11:50:51) исполняемый файл (.jar) ☕️

Смотреть видео
👍558