ru
Feedback
Java Geek

Java Geek

Открыть в Telegram

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

Больше
2 447
Подписчики
Нет данных24 часа
+27 дней
+530 день
Архив постов
Чем различаются 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

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

Для чего нужен метод hashCode()? Метод hashCode() необходим для вычисления хэш кода переданного в качестве входного параметра объекта. В Java это целое число, в более широком смысле - битовая строка фиксированной длины, полученная из массива произвольной длины. Этот метод реализован таким образом, что для одного и того же входного объекта, хэш код всегда будет одинаковым. Следует понимать, что в Java множество возможных хэш кодов ограничено типом int, а множество объектов ничем не ограничено. Из-за этого, вполне возможна ситуация, что хэш коды разных объектов могут совпасть: • если хэш коды разные, то и объекты гарантированно разные; • если хэш коды равны, то объекты не обязательно равны(могут быть разные). @java_geek

Класс FileReader FileReader — это класс в пакете java .io, который можно использовать для чтения потока символов из файлов. Э
Класс FileReader FileReader — это класс в пакете java .io, который можно использовать для чтения потока символов из файлов. Этот класс использует либо указанную кодировку, либо кодировку платформы по умолчанию для декодирования байтов в символы. Разберём некоторые методы класса: read() — метод читает и передает один символ или -1, если поток завершен; read(char [] charBuffer, int offset, int length) — считывает поток символов и сохраняет их в заданном символьном буфере. offset - это позиция, с которой начинается чтение, а length - это общее количество символов, которые необходимо прочитать. Он передает большое количество прочитанных символов либо -1, если поток завершен; ready() — сообщает, готов ли поток к чтению. Считается, что поток готов, если его входной буфер не пуст; getEncoding() — используется для возврата заголовка кодировки символов, которая используется потоком; close() — закрывает поток и освобождает связанные с ним системные ресурсы. @java_geek