es
Feedback

¡No caigas en manos de tramposos! Telemetrio encuentra y marca estos canales 👉 Si quieres ver la etiqueta, suscríbete

Java Geek

Java Geek

Ir al canal en Telegram

Практичные советы, лайфхаки и код для Java-разработчиков. Каждый пост — реальная польза. Учим Java на примерах. По всем вопросам @evgenycarter

Mostrar más
2 352
Suscriptores
-124 horas
Sin datos7 días
-1530 días
Archivo de publicaciones
Google-json (GSON) Google-json, как понятно из названия, ещё одна разработка прямиком из Google. Библиотека реализует механиз
Google-json (GSON) Google-json, как понятно из названия, ещё одна разработка прямиком из Google. Библиотека реализует механизмы работы с форматом JSON, а именно приведение Java-объектов в этот формат и обратно. Примерно вот так выглядит сериализация и десериализация с помощью GSON(см картинку). Как видно, перевод объекта проходит с помощью минимального количества легкочитаемого и понимаемого кода. Особенно эта библиотека пригодится при работе с RESTful приложениями, которые общаются преимущественно с помощью json. @java_geek

Пирамидальная сортировка Пирамидальная сортировка является методом сортировки, который интерпретирует элементы в массиве, как
Пирамидальная сортировка Пирамидальная сортировка является методом сортировки, который интерпретирует элементы в массиве, как почти полное бинарное дерево. Она берет элементы массива и вставляет их в пирамиду. После построения пирамиды, из нее по очереди удаляются наибольшие элементы и вставляются в конец массива, где и находятся в отсортированном виде. Общее время сортировки расчитывается по O(N logN) для N элементов. @java_geek

NullPointer Exception Исключения нулевого указателя возникает в Java довольно часто при попытке вызова метода несуществующего
NullPointer Exception Исключения нулевого указателя возникает в Java довольно часто при попытке вызова метода несуществующего объекта. Возьмем для примера следующую строчку кода: int noOfStudents = school.listStudents().count; Если объект school окажется равен Null или его метод listStudents вернет Null, вы получите исключение NullPointerException. Хорошей практикой разработки на Java является предварительная проверка на Null в методах. @java_geek

Interface for Consts Очень часто встречаются интерфейсы для описания констант. Это не правильно с точки зрения ООП. Интерфейс
Interface for Consts Очень часто встречаются интерфейсы для описания констант. Это не правильно с точки зрения ООП. Интерфейс должен описывать поведение, не больше не меньше. Этот пункт не очень принципиален, тем более что результат компиляции будет один и тот же, но все же java это ООП язык и было бы хорошо придерживаться его принципов. @java_geek

Метод fill() Присваивает определенное значение int к каждому элементу указанного целочисленного массива. Такой же метод может
Метод fill() Присваивает определенное значение int к каждому элементу указанного целочисленного массива. Такой же метод может быть использован всеми другими примитивными типами данных (byte, short, int и т.д.). @java_geek

Класс-оболочка и тип данных В приведенном выше примере второй оператор печати не будет отображать значение true, поскольку ср
Класс-оболочка и тип данных В приведенном выше примере второй оператор печати не будет отображать значение true, поскольку сравниваются ссылки на объекты класса-оболочки, а не их значения. @java_geek

Bit Set Что, если нам нужно выполнить какие-то операции с массивами битов? Вы будете использовать для этого boolean[]? Для эт
Bit Set Что, если нам нужно выполнить какие-то операции с массивами битов? Вы будете использовать для этого boolean[]? Для этого есть более эффективный с точки зрения использования памяти метод. Это класс BitSet, позволяющий нам хранить массивы битов и манипулировать ими. По сравнению с boolean[] он требует в 8 раз меньше памяти. Мы можем выполнять логические операции над массивами, такими как, например and, or, xor. Допустим, у нас есть два входных массива битов. Мы хотим провести на них операцию xor. Уточню, операция xor, возвращает только те элементы, которые имеются только в одном массиве, но не в другом. Для этого нам нужно создать два экземпляра BitSet и вставить туда элементы, как показано ниже. Наконец, вы должны вызвать метод xor в одном из BitSet объектов, указав в качестве аргумента второй BitSet объект. @java_geek

Шестнадцатеричный формат За этим нет большой истории. Иногда нам нужно преобразовать строки в шестнадцатеричный формат, байты
Шестнадцатеричный формат За этим нет большой истории. Иногда нам нужно преобразовать строки в шестнадцатеричный формат, байты или символы. Начиная с Java 17 вы можете использовать класс HexFormat. Просто создайте экземпляр HexFormat, а затем вы можете отформатировать, например, входную таблицу byte в шестнадцатеричную строку. Вы также можете, например, преобразовать входную шестнадцатеричную строку в таблицу байтов, как показано выше. @java_geek

Generics Всегда старайтесь типизировать ваши коллекции, методы и классы. Это избавляет сразу от 2-х потенциальных проблем: пр
Generics Всегда старайтесь типизировать ваши коллекции, методы и классы. Это избавляет сразу от 2-х потенциальных проблем: приведение типов и ошибок выполнения. Также назначение таких коллекций легче воспринимать. Особенно часто этим пренебрегают мои американо-индусские коллеги. Если же ваша коллекция должна содержать обьекты разных типов — используйте <?>, а еще лучше <? extends someType> тогда зная общий класс/интерфейс для всех обьектов вам не прийдется делать приведение типов и применять оператор instanceOf. @java_geek

Статический вложенный класс в Java Статический внутренний класс — это вложенный класс, который является статическим членом вн
Статический вложенный класс в Java Статический внутренний класс — это вложенный класс, который является статическим членом внешнего класса. Доступ к нему возможен без создания экземпляра внешнего класса с использованием других статических элементов. Как и статические члены, статический вложенный класс не имеет доступа к переменным экземпляра и методам внешнего класса. Синтаксис статического вложенного класса в Java выглядит следующим образом: class MyOuter { static class Nested_Demo { } } Создание экземпляра статического вложенного класса немного отличается от экземпляра внутреннего класса. Следующая программа показывает, как использовать статические вложенные классы. @java_geek

Что за зверь "Matcher"? Класс Java Matcher (java.util.regex.Matcher) создан для поиска некоторого множества вхождений регуляр
Что за зверь "Matcher"? Класс Java Matcher (java.util.regex.Matcher) создан для поиска некоторого множества вхождений регулярного выражения в одном тексте и поиска по одному шаблону в разных текстах. Класс Java Matcher имеет много полезных методов. Например: • boolean matches(): вернет значение true при совпадении строки с шаблоном. • boolean find(): вернет значение true при обнаружении подстроки, совпадающей с шаблоном, и перейдет к ней. • int start(): вернет значение индекса соответствия. • int end(): вернет значение индекса последующего соответствия. • String replaceAll(String str): вернет значение измененной строки подстрокой str. Другие методы Matcher можно найти в официальной документации. Рассмотрите простой пример работы с Pattern и Matcher. @java_geek

Конструктор по умолчанию в Java Как и C++, Java автоматически создает конструктор по умолчанию, если нет конструктора по умол
Конструктор по умолчанию в Java Как и C++, Java автоматически создает конструктор по умолчанию, если нет конструктора по умолчанию или параметризованного конструктора, написанного программистом. А также как и в C++ конструктор по умолчанию автоматически вызывает родительский конструктор по умолчанию. Но, в отличие от C++, конструктор по умолчанию в Java инициализирует члены класса значениями по умолчанию (числовые значения инициализируются как 0, логические значения инициализируются как false, а ссылки инициализируются как null). @java_geek

Работа с ошибками Отлов багов – это, возможно, самая трудоемкая составляющая процесса разработки на Java. Трассировка стека п
Работа с ошибками Отлов багов – это, возможно, самая трудоемкая составляющая процесса разработки на Java. Трассировка стека позволяет отследить, в каком именно месте проекта было выброшено исключение. @java_geek

Эффективный трюк, чтобы узнать, является ли число степенью двойки Обычный метод деления имеет сложность O(logN), но эту задач
Эффективный трюк, чтобы узнать, является ли число степенью двойки Обычный метод деления имеет сложность O(logN), но эту задачу можно решить со сложностью O(v), где v — количество цифр числа в двоичной форме. @java_geek

Резервирование памяти Некоторые Java-приложения очень требовательны к ресурсам и могут работать медленно. Для повышения произ
Резервирование памяти Некоторые Java-приложения очень требовательны к ресурсам и могут работать медленно. Для повышения производительности можно выделять Java-машине больше оперативной памяти. • Xms – минимальный пул выделения памяти; • Xmx – максимальный пул выделения памяти; • XX:PermSize – начальный размер, который будет выделен при запуске JVM; • XX:MaxPermSize – максимальный размер, который может быть выделен при запуске JVM. @java_geek

Бинарный поиск в массивах Допустим, мы хотим вставить новый элемент в отсортированную таблицу. Arrays.binarySearch() возвраща
Бинарный поиск в массивах Допустим, мы хотим вставить новый элемент в отсортированную таблицу. Arrays.binarySearch() возвращает индекс ключа поиска, если он содержится в таблице. В противном случае она возвращает точку вставки, которую мы можем использовать для подсчета индекса для нового ключа: -(insertion point)-1. Более того, метод binarySearch является самым простым и эффективным методом поиска элемента в отсортированном массиве в Java. Рассмотрим следующий пример. У нас есть таблица ввода с четырьмя элементами, упорядоченными по возрастанию. Мы хотели бы вставить номер 3 в эту таблицу. Вот как мы можем подсчитать индекс точки вставки. @java_geek

Пустая коллекция вместо Null Если ваша программа может возвращать коллекцию, которая не содержит ни одного значения, убедитес
Пустая коллекция вместо Null Если ваша программа может возвращать коллекцию, которая не содержит ни одного значения, убедитесь, что возвращена именно пустая коллекция, а не Null. Это сэкономит вам время на различные проверки. @java_geek

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

Проверка четности или нечетности числа без использования оператора % Хотя этот трюк не намного лучше, чем использование опера
Проверка четности или нечетности числа без использования оператора % Хотя этот трюк не намного лучше, чем использование оператора %, но иногда он все-таки более эффективен (с большими числами). @java_geek

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