ru
Feedback
Java Geek

Java Geek

Открыть в Telegram

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

Больше
2 379
Подписчики
Нет данных24 часа
-97 дней
-3530 день
Архив постов
Регулярное выражение для электронной почты Регулярные выражения представляют собой формальный язык поиска и редактирования по
Регулярное выражение для электронной почты Регулярные выражения представляют собой формальный язык поиска и редактирования подстрок в тексте. К примеру, надо провалидировать email адрес. Это будет проверка на наличие имени адреса, домена, символа @, точки и доменной зоны. @java_geek

Что такое «пул строк»? Пул строк – это набор строк, хранящийся в Heap. • Пул строк возможен благодаря неизменяемости строк в Java и реализации идеи интернирования строк; • Пул строк помогает экономить память, но по этой же причине создание строки занимает больше времени; • Когда для создания строки используются ", то сначала ищется строка в пуле с таким же значением, если находится, то просто возвращается ссылка, иначе создается новая строка в пуле, а затем возвращается ссылка на неё; • При использовании оператора new создаётся новый объект String. Затем при помощи метода intern() эту строку можно поместить в пул или же получить из пула ссылку на другой объект String с таким же значением; • Пул строк является примером паттерна «Приспособленец» (Flyweight). @java_geek

Метод replaceAll() Заменяет каждую подстроку данной строки, которая соответствует заданному регулярному выражению, с данной з
Метод replaceAll() Заменяет каждую подстроку данной строки, которая соответствует заданному регулярному выражению, с данной заменой, другими словами — метод позволяет заменить слово в строке. Параметры regex — регулярное выражение, которому данная строка должна соответствовать; replacement — строка, которая заменит найденное выражение. @java_geek

Чем различаются JRE, JVM и JDK? TL;DR: JDK - среда для разработки программ на Java, включающая в себя JRE - среду для обеспечения запуска Java программ, которая в свою очередь содержит JVM - интерпретатор кода Java программ. ☕️ JVM, Java Virtual Machine (Виртуальная машина Java) — основная часть среды времени исполнения Java (JRE). Виртуальная машина Java исполняет байт-код Java, предварительно созданный из исходного текста Java-программы компилятором. JVM может также использоваться для выполнения программ, написанных на других языках программирования. ☕️ JRE, Java Runtime Environment (Среда времени выполнения Java) — минимально-необходимая реализация виртуальной машины для исполнения Java-приложений. Состоит из JVM и стандартного набора библиотек классов Java. ☕️ JDK, Java Development Kit (Комплект разработки на Java) — JRE и набор инструментов разработчика приложений на языке Java, включающий в себя компилятор Java, стандартные библиотеки классов Java, примеры, документацию, различные утилиты. @java_geek

Метод Math.pow() Возводит значение первого аргумента в степень второго аргумента, тем самым позволяет осуществить быстрое воз
Метод Math.pow() Возводит значение первого аргумента в степень второго аргумента, тем самым позволяет осуществить быстрое возведение в степень любых значений. Выше рассмотрен пример возведение числа в квадрат и куб. Заметьте, для вывода на экран целого значения используется "%.0f", так как метод возвращает double значение. @java_geek

Как разделить строку на слова? Легко с помощью метода split. Он возвращает массив строк, вычисленных путем разделения передан
Как разделить строку на слова? Легко с помощью метода split. Он возвращает массив строк, вычисленных путем разделения переданной строки вокруг переданного регулярного выражения. @java_geek

substring Метод substring() в Java имеет два варианта и возвращает новую строку, которая является подстрокой данной строки. П
substring Метод substring() в Java имеет два варианта и возвращает новую строку, которая является подстрокой данной строки. Подстрока начинается с символа, заданного индексом, и продолжается до конца данной строки или до endIndex-1, если введен второй аргумент. @java_geek

Какое худшее время работы метода add() для ArrayList? O(N). Вставка элемента в конец списка осуществляется за время O(1), но если вместимость массива недостаточна, то происходит создание нового массива с увеличенным размером и копирование всех элементов из старого массива в новый. @java_geek

Классы StringBuilder и StringBuffer Классы StringBuffer и StringBuilder в Java используются, когда возникает необходимость сд
Классы StringBuilder и StringBuffer Классы StringBuffer и StringBuilder в Java используются, когда возникает необходимость сделать много изменений в строке символов. В отличие от строк, объекты типа StringBuffer и StringBuilder могут быть изменены снова и снова, оставляя после себя множество новых неиспользуемых объектов. В Java StringBuilder был введен начиная с Java 5. Основное различие между StringBuffer и StringBuilder такое, что методы StringBuilder не являются безопасными для потоков (несинхронизированные). Рекомендуется использовать StringBuilder всякий раз, когда это возможно, потому что он быстрее, чем StringBuffer в Java. Однако, если необходима безопасность потоков, наилучшим вариантом являются объекты StringBuffer. @java_geek

Опишите иерархию исключений. Исключения делятся на несколько классов, но все они имеют общего предка — класс Throwable, потомками которого являются классы Exception и Error. Ошибки (Errors) представляют собой более серьёзные проблемы, которые, согласно спецификации Java, не следует обрабатывать в собственной программе, поскольку они связаны с проблемами уровня JVM. Например, исключения такого рода возникают, если закончилась память доступная виртуальной машине. Исключения (Exceptions) являются результатом проблем в программе, которые в принципе решаемы, предсказуемы и последствия которых возможно устранить внутри программы. Например, произошло деление целого числа на ноль. @java_geek

Внутренние классы (нестатические вложенные классы) Внутренние классы — это механизм безопасности в Java. Создать такой класс
Внутренние классы (нестатические вложенные классы) Внутренние классы — это механизм безопасности в Java. Создать такой класс довольно просто — нужно написать класс внутри класса. Внутренний класс может быть закрытым (private), и после того, как Вы объявляете внутренний класс закрытым, он не может быть доступен из объекта вне класса. На картинке Outer_Demo – внешний класс, Inner_Demo – внутренний класс, display_Inner() – метод, внутри которого мы создаем внутренний класс, и этот метод вызывается из основного метода. @java_geek

Могут ли у разных объектов быть одинаковые hashCode()? Да, могут. Метод hashCode() не гарантирует уникальность возвращаемого значения. Ситуация, когда у разных объектов одинаковые хэш коды называется коллизией. Вероятность возникновения коллизии зависит от используемого алгоритма генерации хэш кода. @java_geek

Вложенные классы В Java, подобно методам, переменные класса тоже могут иметь в качестве своего члена другой класс. В Java доп
Вложенные классы В Java, подобно методам, переменные класса тоже могут иметь в качестве своего члена другой класс. В Java допускается написание класса внутри другого. Класс, написанный внутри, называется в Java вложенным классом, а класс, который содержит внутренний класс, называется внешним классом. На картинке приведен синтаксис для записи вложенного класса. Здесь класс Outer_Demo – это внешний класс, а класс Nested_Demo – вложенный класс. Вложенные классы в Java делятся на два типа: ☕️ Нестатические вложенные классы – нестатические члены класса. ☕️ Статические вложенные классы – статические члены класса. @java_geek

Какая основная разница между String, StringBuffer, StringBuilder? Класс String является неизменяемым (immutable) - модифицировать объект такого класса нельзя, можно лишь заменить его созданием нового экземпляра. Класс StringBuffer изменяемый - использовать StringBuffer следует тогда, когда необходимо часто модифицировать содержимое. Класс StringBuilder был добавлен в Java 5 и он во всем идентичен классу StringBuffer за исключением того, что он не синхронизирован и поэтому его методы выполняются значительно быстрей. @java_geek

Перегрузка в Java Рассмотрим работу перегрузки методов в Java. Что, если передавать в функцию аргумент, который не вполне соо
Перегрузка в Java Рассмотрим работу перегрузки методов в Java. Что, если передавать в функцию аргумент, который не вполне соответствует определенным нами аргументам по типу? На этом этапе возможны два исхода. 1. Произойдет преобразование типа, но в более высокий тип (с точки зрения диапазона) в том же семействе. 2. Произойдет преобразование типа в следующее более старшее семейство (предположим, что если нет типа данных long, доступного для типа данных int, тогда будет поиск типа данных с плавающей запятой). @java_geek

Метод regionMatches() Используется для сравнения подстроки одной строки с подстрокой другой строки, то есть сравниваются част
Метод regionMatches() Используется для сравнения подстроки одной строки с подстрокой другой строки, то есть сравниваются части строк и возвращается результат этого сравнения — true (если части строк совпали) или false (не совпали). Параметры ignoreCase — логическая переменная со значение true — игнорировать регистр, со значением false — не игнорировать регистр. toffset — позиция, с которой начнем отсчет. other — другая строка, часть которой мы будем сравнивать. ooffset — позиция, с которой начнем отсчет в строке other len — количество символов для сравнения. @java_geek

Ключевое слово abstract в Java abstract - это модификатор, применимый для классов, методов, но не для переменных. Он использу
Ключевое слово abstract в Java abstract - это модификатор, применимый для классов, методов, но не для переменных. Он используется для достижения абстракции, которая является одним из столпов объектно-ориентированного программирования. Рассмотрим варианты применения abstract: 1. Класс, имеющий частичную реализацию (т.е. не все методы, присутствующие в классе, определены). 2. Иногда требуется объявление нереализованного метода в суперклассе. Этого можно добиться, указав модификатор abstract. @java_geek

Почему char[] предпочтительнее String для хранения пароля? С момента создания строка остаётся в пуле, до тех пор, пока не будет удалена сборщиком мусора. Поэтому, даже после окончания использования пароля, он некоторое время продолжает оставаться доступным в памяти и способа избежать этого не существует. Это представляет определённый риск для безопасности, поскольку кто-либо, имеющий доступ к памяти сможет найти пароль в виде текста. В случае использования массива символов для хранения пароля имеется возможность очистить его сразу по окончанию работы с паролем, позволяя избежать риска безопасности, свойственного строке. @java_geek

Разница между == и .equals() в Java Как правило, в Java для сравнения объектов и проверки равенства используются оба equals()
Разница между == и .equals() в Java Как правило, в Java для сравнения объектов и проверки равенства используются оба equals() и «==», но вот некоторые из различий между ними: 1. Один из них является методом, а другой - оператором. 2. Можно использовать оператор == для сравнения ссылок (адресов в памяти) и метод .equals() для сравнения содержимого. Проще говоря, == проверяет, указывают ли оба объекта на одно и то же место в памяти, тогда как .equals() сравнивает значения в объектах. 3. Если класс не переопределяет метод equals, то по умолчанию он использует метод equals ближайшего родительского класса, который переопределил этот метод. @java_geek

Программа на Java, убирающая все переносы в строке Для замены всех переносов («\n») можно использовать функцию replace(). Str
Программа на Java, убирающая все переносы в строке Для замены всех переносов («\n») можно использовать функцию replace(). String replace() возвращает новый объект String, который содержит ту же последовательность символов, что и исходная строка, но с замененным символом. Таким образом с помощью функции replace() можно заменять любые символы в строке на нужные. @java_geek