Ветвление switch
В Java существует два основных типа ветвлений скрипта: if...else и switch. Первый тип проверят некое условие и если оно верно — выполняет код.
В свою очередь switch получает на вход проверяемое значение и сравнивает его с перезаписанными данными. Если какой-то случай case совпадает, то JVM выполняет соответствующий код.
Отличительной особенностью switch есть то, что все его условия статические и компилируются сразу в байткод.
#lesson #keyword
В Java существует два основных типа ветвлений скрипта: if...else и switch. Первый тип проверят некое условие и если оно верно — выполняет код.
В свою очередь switch получает на вход проверяемое значение и сравнивает его с перезаписанными данными. Если какой-то случай case совпадает, то JVM выполняет соответствующий код.
Отличительной особенностью switch есть то, что все его условия статические и компилируются сразу в байткод.
#lesson #keyword
❤1🤔1
  Вектор в Java
До появления системы Collections в Java часто использовался класс Vector<E> — старый аналог нынешнего ArrayList.
Основным отличием вектора от списка в распределении динамической памяти. При добавлении нового элемента в вектор он пересоздаёт массив с данными, прибавляя 1 к длиннее. В свою очередь, список умножает длину на 2.
Из этого можно сделать вывод: векторы меньше расходуют память, но требуют большего времени для добавления элемента
#lesson #collection
  До появления системы Collections в Java часто использовался класс Vector<E> — старый аналог нынешнего ArrayList.
Основным отличием вектора от списка в распределении динамической памяти. При добавлении нового элемента в вектор он пересоздаёт массив с данными, прибавляя 1 к длиннее. В свою очередь, список умножает длину на 2.
Из этого можно сделать вывод: векторы меньше расходуют память, но требуют большего времени для добавления элемента
#lesson #collection
Конструкция do...while
Эта конструкция встречается редко на практике, но знать её нужно. Описать её можно как дополнение к привычному всем while(condition).
Суть в чём: сначала в блоке do{...} пишется код, а после вызывается while(condition). В результате обязательно выполнится код в блоке do, а после начнётся цикл while.
#lesson #features
  Эта конструкция встречается редко на практике, но знать её нужно. Описать её можно как дополнение к привычному всем while(condition).
Суть в чём: сначала в блоке do{...} пишется код, а после вызывается while(condition). В результате обязательно выполнится код в блоке do, а после начнётся цикл while.
#lesson #features
Regex-выражения в Java
Работа с Regex а Java максимально упрощенна и сводится к двум основным классам – Pattern и Matcher.
Класс Pattern хранит в себе само выражение и может создать Matcher для него. Также для упрощённой работы в нём есть статические методы для проверки без создания Matcher-а.
#lesson #regex
  Работа с Regex а Java максимально упрощенна и сводится к двум основным классам – Pattern и Matcher.
Класс Pattern хранит в себе само выражение и может создать Matcher для него. Также для упрощённой работы в нём есть статические методы для проверки без создания Matcher-а.
#lesson #regex
Работа с Matcher
Объект Matcher создаётся с помощью класса Pattern и позволяет находить части строки, которые подходят под введённое выражение.
К примеру, методы match() и find() возвращают true если такая строка была найдена. Разница в них лишь в том, что find() записывает положение найденного участка строки.
После того как этот участок найден и записан, с помощью метода group() можно получить строку с группой. В regex-выражениях группы обозначаются круглыми скобками.
#lesson #regex
Объект Matcher создаётся с помощью класса Pattern и позволяет находить части строки, которые подходят под введённое выражение.
К примеру, методы match() и find() возвращают true если такая строка была найдена. Разница в них лишь в том, что find() записывает положение найденного участка строки.
После того как этот участок найден и записан, с помощью метода group() можно получить строку с группой. В regex-выражениях группы обозначаются круглыми скобками.
#lesson #regex
❤1
  Пакетный менеджер Maven 
Чтобы быстро и удобно добавлять чужие библиотеки и фреймворки в свой проект программисты придумали пакетные менеджеры. Благодаря им можно в несколько строчек импортировать различные ресурсы в проект.
Maven основан на файле pom.xml, в котором хранятся все настройки проекта. К примеру в блоке <dependencies>...</> указанны подключённые к проекту модули.
В наше время пакетные менеджеры предоставляют намного более широкий функционал, например установка плагинов, компиляция проекта и загрузка его на сторонние сервисы.
#java #lesson #resourses
Чтобы быстро и удобно добавлять чужие библиотеки и фреймворки в свой проект программисты придумали пакетные менеджеры. Благодаря им можно в несколько строчек импортировать различные ресурсы в проект.
Maven основан на файле pom.xml, в котором хранятся все настройки проекта. К примеру в блоке <dependencies>...</> указанны подключённые к проекту модули.
В наше время пакетные менеджеры предоставляют намного более широкий функционал, например установка плагинов, компиляция проекта и загрузка его на сторонние сервисы.
#java #lesson #resourses
👍4❤1
  Сортировка Stream
Для сортировки в классе Stream существует метод sorted, у которого есть две реализации.
Основной это метод Stream<T>::sorted(). Он сортирует элементы которые имплементирует интерфейс Comparable<T>. Логика проста: если результат метода compare(T o) отрицательный, то объект о будет ниже в списке, если же положительный — выше.
Также можно сортировать объекты своим объектом Comparator с помощью метода sorted(Comparator<? extend T>).
#java #lesson #stream
Для сортировки в классе Stream существует метод sorted, у которого есть две реализации.
Основной это метод Stream<T>::sorted(). Он сортирует элементы которые имплементирует интерфейс Comparable<T>. Логика проста: если результат метода compare(T o) отрицательный, то объект о будет ниже в списке, если же положительный — выше.
Также можно сортировать объекты своим объектом Comparator с помощью метода sorted(Comparator<? extend T>).
#java #lesson #stream
👍3
  Софт-девелопинг на Java
Язык Java часто используется для создания софта. Уверен многие из вас используют продукты JetBrains — они тоже написаны на Java.
Для создания приложений (не только на пк, но и на телефоны) используют один из трёх официальных движков: AWT, Swing и JavaFX.
Последний является самым популярным и удобным на данный момент, если будете пробовать данное направление — начинайте с него
#java #lesson #soft
  Язык Java часто используется для создания софта. Уверен многие из вас используют продукты JetBrains — они тоже написаны на Java.
Для создания приложений (не только на пк, но и на телефоны) используют один из трёх официальных движков: AWT, Swing и JavaFX.
Последний является самым популярным и удобным на данный момент, если будете пробовать данное направление — начинайте с него
#java #lesson #soft
Строки в Java
По своей сути, строки — это массив символов char, обёрнутый в класс String. Такая обёртка позволяет обрабатывать строку всеми возможными методами: split, join, trim и другими.
Особенность строк Java в том, что они — ссылочные и неизменяемые. Это позволяет оптимизировать занимаемую память строкой.
#lesson
По своей сути, строки — это массив символов char, обёрнутый в класс String. Такая обёртка позволяет обрабатывать строку всеми возможными методами: split, join, trim и другими.
Особенность строк Java в том, что они — ссылочные и неизменяемые. Это позволяет оптимизировать занимаемую память строкой.
#lesson
👍3
  implements и extends
Одной из основных догм в ООП является наследование. В Java можно наследовать как и классы, так и интерфейсы, но делается это по-разному.
Ключевое слово extends привязывает к классу родительский класс и только один. В своё время ключевое слово implements привязывает к классу один или несколько интерфейсов, которые класс должен реализовать.
#java #lesson #oop
Одной из основных догм в ООП является наследование. В Java можно наследовать как и классы, так и интерфейсы, но делается это по-разному.
Ключевое слово extends привязывает к классу родительский класс и только один. В своё время ключевое слово implements привязывает к классу один или несколько интерфейсов, которые класс должен реализовать.
#java #lesson #oop
👍2🔥2
  NullPointer Exception
Исключения нулевого указателя возникает в Java довольно часто при попытке вызова метода несуществующего объекта.
Возьмем для примера следующую строчку кода:
Если объект school окажется равен
Хорошей практикой разработки на Java является предварительная проверка на
#lesson #bug
Исключения нулевого указателя возникает в Java довольно часто при попытке вызова метода несуществующего объекта.
Возьмем для примера следующую строчку кода:
int noOfStudents = school.listStudents().count;Если объект school окажется равен
Null или его метод listStudents вернет Null, вы получите исключение NullPointerException.Хорошей практикой разработки на Java является предварительная проверка на
Null в методах (смотри на картинке).#lesson #bug
👍3
  System.currentTimeMillis vs System.nanoTime
В Java есть два стандартных способа проведения тайм-операций и не всегда понятно, какой из них следует выбрать.
Метод
Метод
Таким образом,
#lesson #time
В Java есть два стандартных способа проведения тайм-операций и не всегда понятно, какой из них следует выбрать.
Метод
System.currentTimeMillis возвращает текущее количество миллисекунд от начала эпохи Unix в формате Long. Его точность составляет от 1 до 15 тысячных долей секунды в зависимости от системы.long startTime = System.currentTimeMillis();long estimatedTime = System.currentTimeMillis() - startTime;Метод
System.nanoTime имеет точность до одной миллионной доли секунды (наносекунды) и возвращает текущее значение наиболее точного доступного системного таймера.long startTime = System.nanoTime();long estimatedTime = System.nanoTime() - startTime;Таким образом,
System.currentTimeMillis отлично подходит для отображения абсолютного времени и синхронизации с ним, а System.nanoTime – для измерения относительных интервалов.#lesson #time
👍2
  Оптимизация строк
При конкатенации строк на Java с помощью оператора +, например, в цикле for, каждый раз создается новый объект String, что приводит к потере памяти и увеличению времени работы программы.
Также следует избегать создания Java строки с помощью конструктора класса: (смотри на фото)
#lesson #string
При конкатенации строк на Java с помощью оператора +, например, в цикле for, каждый раз создается новый объект String, что приводит к потере памяти и увеличению времени работы программы.
Также следует избегать создания Java строки с помощью конструктора класса: (смотри на фото)
#lesson #string
🤔2
  Одинарные и двойные кавычки
Что вы ожидаете получить от этого кода?
Казалось бы, должна вернуться строка
Двойные кавычки обрабатывают символы как строки, но одинарные ведут себя иначе. Они преобразуют символьные операнды (
#lesson #string
Что вы ожидаете получить от этого кода?
public class Haha {  public static void main(String args[]) {    System.out.print("H" + "a");    System.out.print('H' + 'a');  }}Казалось бы, должна вернуться строка
HaHa, но на деле будет Ha169.Двойные кавычки обрабатывают символы как строки, но одинарные ведут себя иначе. Они преобразуют символьные операнды (
'H' и 'a') к целочисленным значениям через расширение примитивных типов – получается 169.#lesson #string
👍1
  Можно ли использовать этот код для точного определения нечетности числа?
Надеюсь, вы заметили подвох. Если мы решим проверить таким образом отрицательное нечетное число (-5, к примеру), остаток от деления не будет равен единице (а чему он равен?). Поэтому используйте более точный метод:
Он не только решает проблему отрицательных чисел, но и работает более продуктивно, чем его предшественник. Арифметические и логические операции выполняются гораздо быстрее умножения и деления.
#lesson #number
Надеюсь, вы заметили подвох. Если мы решим проверить таким образом отрицательное нечетное число (-5, к примеру), остаток от деления не будет равен единице (а чему он равен?). Поэтому используйте более точный метод:
public boolean oddOrNot(int num) {  return (num & 1) != 0;}Он не только решает проблему отрицательных чисел, но и работает более продуктивно, чем его предшественник. Арифметические и логические операции выполняются гораздо быстрее умножения и деления.
#lesson #number
👍1
  Строки в Java
По своей сути, строки — это массив символов char, обёрнутый в класс String. Такая обёртка позволяет обрабатывать строку всеми возможными методами: split, join, trim и другими.
Особенность строк Java в том, что они — ссылочные и неизменяемые. Это позволяет оптимизировать занимаемую память строкой.
#lesson
По своей сути, строки — это массив символов char, обёрнутый в класс String. Такая обёртка позволяет обрабатывать строку всеми возможными методами: split, join, trim и другими.
Особенность строк Java в том, что они — ссылочные и неизменяемые. Это позволяет оптимизировать занимаемую память строкой.
#lesson
❤3
  Массив vs Список
В основном вы будете работать с массивами — наборами данных определённой длины. В Java они имеют Си-подобный синтаксис и являются очень быстрыми в работе.
Однако, фиксированная длина часто стреляет в ногу программистам, так как не все данные являются статическими. В таких случаях, им на помощь приходят List-ы. Они позволяют создавать динамические наборы данных, также предоставляя некоторые методы для их обработки.
#java #lesson
  В основном вы будете работать с массивами — наборами данных определённой длины. В Java они имеют Си-подобный синтаксис и являются очень быстрыми в работе.
Однако, фиксированная длина часто стреляет в ногу программистам, так как не все данные являются статическими. В таких случаях, им на помощь приходят List-ы. Они позволяют создавать динамические наборы данных, также предоставляя некоторые методы для их обработки.
#java #lesson
System.arraycopy
Невероятно полезный и часто используемый метод. Суть в чём: он копирует данные из одного массива в другой с учётом индексации.
Ситаксис:
В результате метод копирует значения из source[from] по source[from + len] и вставляет их в массив root в позицию dest.
#lesson
  Невероятно полезный и часто используемый метод. Суть в чём: он копирует данные из одного массива в другой с учётом индексации.
Ситаксис:
System.arraycopy(source, from, root, dest, len);В результате метод копирует значения из source[from] по source[from + len] и вставляет их в массив root в позицию dest.
#lesson