Опишите иерархию исключений.
Исключения делятся на несколько классов, но все они имеют общего предка — класс Throwable, потомками которого являются классы Exception и Error.
Ошибки (Errors) представляют собой более серьёзные проблемы, которые, согласно спецификации Java, не следует обрабатывать в собственной программе, поскольку они связаны с проблемами уровня JVM. Например, исключения такого рода возникают, если закончилась память доступная виртуальной машине.
Исключения (Exceptions) являются результатом проблем в программе, которые в принципе решаемы, предсказуемы и последствия которых возможно устранить внутри программы. Например, произошло деление целого числа на ноль.
#java
Подписывайтесь на канал 👉@cod_academy
Исключения делятся на несколько классов, но все они имеют общего предка — класс Throwable, потомками которого являются классы Exception и Error.
Ошибки (Errors) представляют собой более серьёзные проблемы, которые, согласно спецификации Java, не следует обрабатывать в собственной программе, поскольку они связаны с проблемами уровня JVM. Например, исключения такого рода возникают, если закончилась память доступная виртуальной машине.
Исключения (Exceptions) являются результатом проблем в программе, которые в принципе решаемы, предсказуемы и последствия которых возможно устранить внутри программы. Например, произошло деление целого числа на ноль.
#java
Подписывайтесь на канал 👉@cod_academy
👍4
JSON, сериализация
JSON – невероятно удобный и полезный синтаксис для хранения и обмена данными. Java полностью поддерживает его.
В данном примере кода рассмотрим пример сериализации данных.
#java
Подписывайтесь на канал 👉@cod_academy
JSON – невероятно удобный и полезный синтаксис для хранения и обмена данными. Java полностью поддерживает его.
В данном примере кода рассмотрим пример сериализации данных.
#java
Подписывайтесь на канал 👉@cod_academy
👍3
Классы StringBuilder и StringBuffer
Классы StringBuffer и StringBuilder в Java используются, когда возникает необходимость сделать много изменений в строке символов.
В отличие от строк, объекты типа StringBuffer и StringBuilder могут быть изменены снова и снова, оставляя после себя множество новых неиспользуемых объектов.
В Java StringBuilder был введен начиная с Java 5. Основное различие между StringBuffer и StringBuilder такое, что методы StringBuilder не являются безопасными для потоков (несинхронизированные).
Рекомендуется использовать StringBuilder всякий раз, когда это возможно, потому что он быстрее, чем StringBuffer в Java. Однако, если необходима безопасность потоков, наилучшим вариантом являются объекты StringBuffer.
#java
Подписывайтесь на канал 👉@cod_academy
Классы StringBuffer и StringBuilder в Java используются, когда возникает необходимость сделать много изменений в строке символов.
В отличие от строк, объекты типа StringBuffer и StringBuilder могут быть изменены снова и снова, оставляя после себя множество новых неиспользуемых объектов.
В Java StringBuilder был введен начиная с Java 5. Основное различие между StringBuffer и StringBuilder такое, что методы StringBuilder не являются безопасными для потоков (несинхронизированные).
Рекомендуется использовать StringBuilder всякий раз, когда это возможно, потому что он быстрее, чем StringBuffer в Java. Однако, если необходима безопасность потоков, наилучшим вариантом являются объекты StringBuffer.
#java
Подписывайтесь на канал 👉@cod_academy
👍4
substring
Метод
#java
Подписывайтесь на канал 👉@cod_academy
Метод
substring() в Java имеет два варианта и возвращает новую строку, которая является подстрокой данной строки. Подстрока начинается с символа, заданного индексом, и продолжается до конца данной строки или до endIndex-1, если введен второй аргумент.#java
Подписывайтесь на канал 👉@cod_academy
👍3
Список исключений
Выше приведён список контролируемых исключений (Checked Exceptions) в Java, определенных в java.lang.
#java
Подписывайтесь на канал 👉@cod_academy
Выше приведён список контролируемых исключений (Checked Exceptions) в Java, определенных в java.lang.
#java
Подписывайтесь на канал 👉@cod_academy
👍3
Как разделить строку на слова?
Легко с помощью метода
#java
Подписывайтесь на канал 👉@cod_academy
Легко с помощью метода
split. Он возвращает массив строк, вычисленных путем разделения переданной строки вокруг переданного регулярного выражения.#java
Подписывайтесь на канал 👉@cod_academy
👍2
Метод Math.pow()
Возводит значение первого аргумента в степень второго аргумента, тем самым позволяет осуществить быстрое возведение в степень любых значений.
Выше рассмотрен пример возведение числа в квадрат и куб.
Заметьте, для вывода на экран целого значения используется "%.0f", так как метод возвращает double значение.
#java
Подписывайтесь на канал 👉@cod_academy
Возводит значение первого аргумента в степень второго аргумента, тем самым позволяет осуществить быстрое возведение в степень любых значений.
Выше рассмотрен пример возведение числа в квадрат и куб.
Заметьте, для вывода на экран целого значения используется "%.0f", так как метод возвращает double значение.
#java
Подписывайтесь на канал 👉@cod_academy
👍1
Чем различаются 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
Подписывайтесь на канал 👉@cod_academy
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
Подписывайтесь на канал 👉@cod_academy
👍3
Метод replaceAll()
Заменяет каждую подстроку данной строки, которая соответствует заданному регулярному выражению, с данной заменой, другими словами — метод позволяет заменить слово в строке.
Параметры
#java
Подписывайтесь на канал 👉@cod_academy
Заменяет каждую подстроку данной строки, которая соответствует заданному регулярному выражению, с данной заменой, другими словами — метод позволяет заменить слово в строке.
Параметры
regex — регулярное выражение, которому данная строка должна соответствовать; replacement — строка, которая заменит найденное выражение.#java
Подписывайтесь на канал 👉@cod_academy
👍2
Методы start и end
Выше представлен пример, в котором производится подсчет количества раз, когда в строке ввода встречается слово "кот".
Как видим, в данном примере используются границы слов с целью удостоверения в том, что буквы "c" "a" "t" не являются частью другого слова. Также отображаются определенные полезные сведения касательно нахождения совпадения в вводимой строке.
Метод start производит возврат начального индекса в последовательности, захваченной в данной группе в ходе предыдущей операции поиска совпадений, а end производит возврат индекса к последнему совпавшему символу, плюс один.
#java
Подписывайтесь на канал 👉@cod_academy
Выше представлен пример, в котором производится подсчет количества раз, когда в строке ввода встречается слово "кот".
Как видим, в данном примере используются границы слов с целью удостоверения в том, что буквы "c" "a" "t" не являются частью другого слова. Также отображаются определенные полезные сведения касательно нахождения совпадения в вводимой строке.
Метод start производит возврат начального индекса в последовательности, захваченной в данной группе в ходе предыдущей операции поиска совпадений, а end производит возврат индекса к последнему совпавшему символу, плюс один.
#java
Подписывайтесь на канал 👉@cod_academy
👍1
Что такое «пул строк»?
Пул строк – это набор строк, хранящийся в Heap.
• Пул строк возможен благодаря неизменяемости строк в Java и реализации идеи интернирования строк;
• Пул строк помогает экономить память, но по этой же причине создание строки занимает больше времени;
• Когда для создания строки используются ", то сначала ищется строка в пуле с таким же значением, если находится, то просто возвращается ссылка, иначе создается новая строка в пуле, а затем возвращается ссылка на неё;
• При использовании оператора new создаётся новый объект String. Затем при помощи метода intern() эту строку можно поместить в пул или же получить из пула ссылку на другой объект String с таким же значением;
• Пул строк является примером паттерна «Приспособленец» (Flyweight).
#java
Подписывайтесь на канал 👉@cod_academy
Пул строк – это набор строк, хранящийся в Heap.
• Пул строк возможен благодаря неизменяемости строк в Java и реализации идеи интернирования строк;
• Пул строк помогает экономить память, но по этой же причине создание строки занимает больше времени;
• Когда для создания строки используются ", то сначала ищется строка в пуле с таким же значением, если находится, то просто возвращается ссылка, иначе создается новая строка в пуле, а затем возвращается ссылка на неё;
• При использовании оператора new создаётся новый объект String. Затем при помощи метода intern() эту строку можно поместить в пул или же получить из пула ссылку на другой объект String с таким же значением;
• Пул строк является примером паттерна «Приспособленец» (Flyweight).
#java
Подписывайтесь на канал 👉@cod_academy
👍3
Регулярное выражение для электронной почты
Регулярные выражения представляют собой формальный язык поиска и редактирования подстрок в тексте. К примеру, надо провалидировать email адрес. Это будет проверка на наличие имени адреса, домена, символа
#java
Подписывайтесь на канал 👉@cod_academy
Регулярные выражения представляют собой формальный язык поиска и редактирования подстрок в тексте. К примеру, надо провалидировать email адрес. Это будет проверка на наличие имени адреса, домена, символа
@, точки и доменной зоны.#java
Подписывайтесь на канал 👉@cod_academy
🔥1
Метод retainAll()
Используется для удаления всех элементов списка массива, не содержащихся в указанной коллекции, или для сохранения всех совпадающих элементов в текущем экземпляре
Подробнее про метод можно почитать здесь.
#java
Подписывайтесь на канал 👉@cod_academy
Используется для удаления всех элементов списка массива, не содержащихся в указанной коллекции, или для сохранения всех совпадающих элементов в текущем экземпляре
ArrayList, которые соответствуют всем элементам из списка Collection, переданного методу в качестве параметра.Подробнее про метод можно почитать здесь.
#java
Подписывайтесь на канал 👉@cod_academy
👍2
Инкапсуляция
Инкапсуляция в Java является механизмом обёртывания данных (переменных) и кода, работающего с данными (методами), в одно целое. В инкапсуляции переменные класса будут скрыты от других классов и доступ к ним может быть получен только с помощью метода их текущего класса. По-другому это называется скрытием данных.
Для достижения инкапсуляции в Java:
☕️ Объявите переменные класса как private.
☕️ Предоставьте public к методам установки и получения (сеттеру и геттеру) для изменения и просмотра значений переменных.
Преимущества инкапсуляции:
☕️ Поля класса можно сделать только для чтения или только для записи.
☕️ Класс может иметь полный контроль над тем, что хранится в его полях.
#java
Подписывайтесь на канал 👉@cod_academy
Инкапсуляция в Java является механизмом обёртывания данных (переменных) и кода, работающего с данными (методами), в одно целое. В инкапсуляции переменные класса будут скрыты от других классов и доступ к ним может быть получен только с помощью метода их текущего класса. По-другому это называется скрытием данных.
Для достижения инкапсуляции в Java:
☕️ Объявите переменные класса как private.
☕️ Предоставьте public к методам установки и получения (сеттеру и геттеру) для изменения и просмотра значений переменных.
Преимущества инкапсуляции:
☕️ Поля класса можно сделать только для чтения или только для записи.
☕️ Класс может иметь полный контроль над тем, что хранится в его полях.
#java
Подписывайтесь на канал 👉@cod_academy
👍2
Сортировка методом выбора
Данный алгоритм имеет схожесть с пузырьковой сортировкой, но работает он несколько быстрее. В качестве примера возьмём ряд чисел, которые мы хотим расставить в возрастающем порядке.
Суть алгоритма заключается в последовательном переборе всех чисел и выборе наименьшего элемента, который мы возьмём и поменяем местами с крайним элементом слева (0 элементом).
Данный алгоритм превосходит пузырьковую сортировку, ведь тут количество необходимых перестановок сокращается с O(N²) до O(N): мы не гоняем один элемент через весь список, но тем не менее, количество сравнений остается O(N²).
#java
Подписывайтесь на канал 👉@cod_academy
Данный алгоритм имеет схожесть с пузырьковой сортировкой, но работает он несколько быстрее. В качестве примера возьмём ряд чисел, которые мы хотим расставить в возрастающем порядке.
Суть алгоритма заключается в последовательном переборе всех чисел и выборе наименьшего элемента, который мы возьмём и поменяем местами с крайним элементом слева (0 элементом).
Данный алгоритм превосходит пузырьковую сортировку, ведь тут количество необходимых перестановок сокращается с O(N²) до O(N): мы не гоняем один элемент через весь список, но тем не менее, количество сравнений остается O(N²).
#java
Подписывайтесь на канал 👉@cod_academy
👍2
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
Закономерность очевидна: группировка переменных с помощью скобок ускоряет работу программы. Это происходит из-за генерации более эффективного байт-кода при умножении одинаковых значений.
#java
Подписывайтесь на канал 👉@cod_academy
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
Закономерность очевидна: группировка переменных с помощью скобок ускоряет работу программы. Это происходит из-за генерации более эффективного байт-кода при умножении одинаковых значений.
#java
Подписывайтесь на канал 👉@cod_academy
👍2
Чем различаются Enumeration и Iterator?
Хотя оба интерфейса и предназначены для обхода коллекций между ними имеются существенные различия:
• с помощью Enumeration нельзя добавлять/удалять элементы;
• в Iterator исправлены имена методов для повышения читаемости кода (Enumeration.hasMoreElements() соответствует Iterator.hasNеxt(), Enumeration.nextElement() соответствует Iterator.nеxt() и т.д);
• Enumeration присутствуют в устаревших классах, таких как Vector/Stack, тогда как Iterator есть во всех современных классах-коллекциях.
#java
Подписывайтесь на канал 👉@cod_academy
Хотя оба интерфейса и предназначены для обхода коллекций между ними имеются существенные различия:
• с помощью Enumeration нельзя добавлять/удалять элементы;
• в Iterator исправлены имена методов для повышения читаемости кода (Enumeration.hasMoreElements() соответствует Iterator.hasNеxt(), Enumeration.nextElement() соответствует Iterator.nеxt() и т.д);
• Enumeration присутствуют в устаревших классах, таких как Vector/Stack, тогда как Iterator есть во всех современных классах-коллекциях.
#java
Подписывайтесь на канал 👉@cod_academy
Вычисление степени
Возвести число в степень можно двумя способами:
☕️ простым умножением;
☕️ с помощью функции Math.pow(double base, double exponent)
Использовать библиотечную функцию рекомендуется только при крайней необходимости, например, в случае дробной или отрицательной степени.
Простое умножение на Java работает в 300-600 раз эффективнее, к тому же его можно дополнительно оптимизировать.
#java
Подписывайтесь на канал 👉@cod_academy
Возвести число в степень можно двумя способами:
☕️ простым умножением;
☕️ с помощью функции Math.pow(double base, double exponent)
Использовать библиотечную функцию рекомендуется только при крайней необходимости, например, в случае дробной или отрицательной степени.
Простое умножение на Java работает в 300-600 раз эффективнее, к тому же его можно дополнительно оптимизировать.
#java
Подписывайтесь на канал 👉@cod_academy
👍1
Метод concat()
Возвращает строку со значением строки, переданной в метод и приложенной к концу строки, используемой для вызова этого метода.
Проще говоря метод concat() в Java объединяет строки, путем добавления одной строки в конец к другой.
#java
Подписывайтесь на канал 👉@cod_academy
Возвращает строку со значением строки, переданной в метод и приложенной к концу строки, используемой для вызова этого метода.
Проще говоря метод concat() в Java объединяет строки, путем добавления одной строки в конец к другой.
#java
Подписывайтесь на канал 👉@cod_academy
👍2😁1
Array vs ArrayList
Выбор между Array (стандартным Java-массивом) и ArrayList зависит от специфики задачи на Java, которую требуется решить. Помните о следующих особенностях этих типов:
☕️ Array имеет фиксированный размер и память для него выделяется в момент объявления, а размер ArrayList может динамически изменяться;
☕️ Массивы Java работают гораздо быстрее, а в ArrayList намного проще добавлять/удалять элементы;
☕️ При работе с Array велика вероятность получить ошибку ArrayIndexOutOfBoundsException;
☕️ У ArrayList только одно измерение, а вот массивы Java могут быть многомерными.
#java
Подписывайтесь на канал 👉@cod_academy
Выбор между Array (стандартным Java-массивом) и ArrayList зависит от специфики задачи на Java, которую требуется решить. Помните о следующих особенностях этих типов:
☕️ Array имеет фиксированный размер и память для него выделяется в момент объявления, а размер ArrayList может динамически изменяться;
☕️ Массивы Java работают гораздо быстрее, а в ArrayList намного проще добавлять/удалять элементы;
☕️ При работе с Array велика вероятность получить ошибку ArrayIndexOutOfBoundsException;
☕️ У ArrayList только одно измерение, а вот массивы Java могут быть многомерными.
#java
Подписывайтесь на канал 👉@cod_academy
👍1