Java Portal | Программирование
11.3K subscribers
800 photos
59 videos
19 files
593 links
Присоединяйтесь к нашему каналу и погрузитесь в мир для Java-разработчика

Связь: @devmangx

РКН: https://clck.ru/3H4WUg
加入频道
📓 Алгоритмы и структуры данных. Извлечение информации на языке Java.

• В книге вы изучите, как следует реализовывать эффективные алгоритмы на основе важнейших структур данных на Java, а также как измерять производительность этих алгоритмов. Каждая глава сопровождается упражнениями, помогающими закрепить материал:

Научитесь работать со структурами данных, например, со списками и словарями, разберитесь, как они работают;
Напишите приложение, которое читает страницы Википедии, выполняет синтаксический разбор и обеспечивает навигацию по полученному дереву данных;
Анализируйте код и учитесь прогнозировать, как быстро он будет работать и сколько памяти при этом потреблять;
Пишите классы, реализующие интерфейс Map, пользуйтесь при этом хеш-таблицей и двоичным деревом поиска;
Создайте простой веб-поисковик с собственным поисковым роботом: он будет индексировать веб-страницы, сохранять их содержимое и возвращать нужные результаты.

📌 Скачать.
Паттерн Singleton

Класс существует только в едином экземпляре и к нему есть глобальный доступ (то есть, отовсюду).

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

Многие новички допускают ошибку, которую я описал выше, что превращает их код в кучу Singleton'ов. Решение: Dependency Injection.

#java #lesson #patterns
Перечисления в Java

Это набор именнованых констант. Таким образом мы можем заменить непонятные цифры (1, 2, 4) или буквы ("E", "W", "N", "S") и сделать код более стабильным.

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

Перечесления в Java могут также хранить собственные переменные и методы. Для этого надо создать enum конструктор и добавить его вызов к значениям.

#java #lesson
Аннотации в Java

Это метаданные, которые предоставляют данные о программе, но никак на неё не влияют. Только данные и всё.

Используется для: передачи информации для компилятора, Обработка во время компиляции/развертывания/во время выполнения.

#java #lesson #theory
Одинарные и двойные кавычки

В Java есть такое понятие, как символ (Char). Это определённая буква, цифра, эмодзи и т.д. Несколько таких символов уже составляют строку (String).

Так вот, в одинарных кавычках мы записываем только один символ, а в двойных кавычках мы создаём строку.

С этим нужно быть очень осторожным, поскольку пытаясь получить "MY", выполняя 'M' + 'Y', вы получите 166.

#java #lesson #theory
Перегрузка функций

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

Перегрузка позволяет нам менять поведение функции в зависимости от типа или кол-ва параметров, которые мы получили.

Самой простой пример — System.out.println(). Если вы посмотрите определение метода, то увидите что он принимает и String, и char, и int.

#java #lesson #overloading
System.arraycopy

Невероятно полезный и часто используемый метод. Суть в чём: он копирует данные из одного массива в другой с учётом индексации.

Ситаксис:

System.arraycopy(source, from, root, dest, len);

В результате метод копирует значения из source[from] по source[from + len] и вставляет их в массив root в позицию dest.

#lesson
java roadmap по которому человек смог стать программистом за 8 месяцев. Ставьте лайки и дизлайки за качество роадмапа - заценим)
https://drive.google.com/file/d/1NEsxE-9FCpxAty7GwW7MULgivZIQwlEA/view
Почему так много кода

Если ваш первый язык не Java, вы скорее всего задавались вопросом: "Почему просто чтобы начать программу или вывести текст в консоль нужно писать так много кода?"

Ответ кроется в структуре языка. В Java всё поделено на классы и объекты, в свою очередь у которых есть атрибуты и методы.

Разберём случай с выводом System.out.println(). Казалось бы, можно же просто ограничится функцией println. Но если мы захотим вывести текст в другой поток, например в System.err? В реализации Java будет достаточно сменить атрибут out -> err

#lesson #theory
В чём разница между абстрактными классами и интерфейсами?

С первого взгляда эти два объекта выполняют одну и тоже функцию — планирование классов. Однако не всё так очевидно.

Абстрактные классы — это такие же обычные классы, но некоторые их методы можно «оставить на потом». Другими словами метод объявленный ключевым словом abstract не надо реализовывать, он будет реализован в дочерних объектах.

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

#java #lesson #oop
Класс LinkedList

Это структура данных в виде связанного списка. Таким образом мы можем быстро добавлять элементы, но нам будет проблематично брать данные по индексу.

У него есть все методы, которые определены в интерфейсах List, Queue, Deque.

addFirst() / offerFirst() — добавляет элемент в начало списка. addLast() / offerLast() — в конец.

removeFirst() / pollFirst() — удаляет первый элемент из начала списка. removeLast() / pollLast() — с конца списка.

getFirst() / peekFirst(); getLast() / peekLast() — возвращает первый/последний элемент списка.

📌 Документация

#java #lesson #collections
Концепция JDBC

Баз данных на SQL-основе существует очень много. К примеру самые популярные из них: SQLite, MySQL и PostgreSQL.

Набор пакетов JDBC предлагает обобщить все эти базы данных, предоставляя общий API. Он предустановлен в JDK и находится в пакете java.sql.

Для подключения к определённой базе данных нужно установить драйвер и указать его в коде как показано выше. 

#lesson #features
Интерфейс Comparable

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

Для реализации такой сортировки тип значения должен имплементировать интерфейс Comparable. Он сравнивает два объекта и возвращает "разницу" между ними в виде числа.

В дальнейшем это разница будет использованная для сортировки значений в коллекции.

#lesson #collections
Теория дженериков в Java

Дженерики — это невероятно важная часть языка Java, которую вы используете повсеместно. Их суть в обобщении типов, тем самым делая классы и методы гибкими.

Использовать дженерики можно в классах и методы. Обозначаются они стрелочными скобками и именем типа <T> (примеры вы можете увидеть выше).

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

#java #lesson #oop
Что такое JVM?

Вероятно, вы уже встречали такое понятие, как Java Virtual Machine, ведь это — самая главная часть языка, отвечающая за выполнение кода.

Когда вы нажимаете на кнопку Build, первым делом запускается компилятор, который переводит код понятный человеку в байт-код, понятный JVM.

После, когда мы запускаем программу, JVM переводит байт-код из .class файлов в конструкции, понятные компьютеру.

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

#lesson #theory
Аннотация FunctionalInterface

С версии Java 1.8 были добавлены лямбда-выражения. Они позволяют в короткой форме описать действия метода, который был описан в функциональном интерфейсе.

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

Для создания функциональных интерфейсов не обязательно использования этой аннотации, но с ней редактор кода будет лучше понимать как обрабатывать данный интерфейс.

#java #lesson #annotations
NullPointerException

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

К сожалению, null могут принимать все ссылочные типы. Это массивы, классы и даже строки. Но вот числа никогда не будут null (поскольку это не ссылочные типы).

Что с этим делать? Достаточно просто добавить проверку на null и что-то делать с этим (выбрасывать ошибку или задавать значение по умолчанию).

#lesson #theory #errors
Нужно быстро отправить файлы с одного компьютера на другой?

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

Для этого вводите: jwebserver -b 0.0.0.0, а на другом компьютере открываете сервер по IP, выбираете и загружаете нужный вам файл.

📌 Документация

Доступно с Java 18

#java #lesson #tricks
this

Ключевое слово, которое указывает на себя. Например, написав this.a мы получим значение свойства a.

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

#java #lesson #theory
JavaRush — это геймифицированный учебник по изучению Java-программирования c нуля

Он содержит 1200 практических задач, необходимый минимум теории по основам Java, а также игры, опросы, интересные проекты и статьи об эффективном обучении и карьере Java‑девелопера

Ссылка: https://github.com/gto76/python-cheatsheet

👉 Java Portal | #ресурсы
Please open Telegram to view this post
VIEW IN TELEGRAM