Работа с Matcher
Объект Matcher создаётся с помощью класса Pattern и позволяет находить части строки, которые подходят под введённое выражение.
К примеру, методы match() и find() возвращают true если такая строка была найдена. Разница в них лишь в том, что find() записывает положение найденного участка строки.
После того как этот участок найден и записан, с помощью метода group() можно получить строку с группой. В regex-выражениях группы обозначаются круглыми скобками.
#lesson #regex
Объект Matcher создаётся с помощью класса Pattern и позволяет находить части строки, которые подходят под введённое выражение.
К примеру, методы match() и find() возвращают true если такая строка была найдена. Разница в них лишь в том, что find() записывает положение найденного участка строки.
После того как этот участок найден и записан, с помощью метода group() можно получить строку с группой. В regex-выражениях группы обозначаются круглыми скобками.
#lesson #regex
Пакетный менеджер Maven
Чтобы быстро и удобно добавлять чужие библиотеки и фреймворки в свой проект программисты придумали пакетные менеджеры. Благодаря им можно в несколько строчек импортировать различные ресурсы в проект.
Maven основан на файле pom.xml, в котором хранятся все настройки проекта. К примеру в блоке <dependencies>...</> указанны подключённые к проекту модули.
В наше время пакетные менеджеры предоставляют намного более широкий функционал, например установка плагинов, компиляция проекта и загрузка его на сторонние сервисы.
#java #lesson #resourses
Чтобы быстро и удобно добавлять чужие библиотеки и фреймворки в свой проект программисты придумали пакетные менеджеры. Благодаря им можно в несколько строчек импортировать различные ресурсы в проект.
Maven основан на файле pom.xml, в котором хранятся все настройки проекта. К примеру в блоке <dependencies>...</> указанны подключённые к проекту модули.
В наше время пакетные менеджеры предоставляют намного более широкий функционал, например установка плагинов, компиляция проекта и загрузка его на сторонние сервисы.
#java #lesson #resourses
Сортировка 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
Софт-девелопинг на 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
implements и extends
Одной из основных догм в ООП является наследование. В Java можно наследовать как и классы, так и интерфейсы, но делается это по-разному.
Ключевое слово extends привязывает к классу родительский класс и только один. В своё время ключевое слово implements привязывает к классу один или несколько интерфейсов, которые класс должен реализовать.
#java #lesson #oop
Одной из основных догм в ООП является наследование. В Java можно наследовать как и классы, так и интерфейсы, но делается это по-разному.
Ключевое слово extends привязывает к классу родительский класс и только один. В своё время ключевое слово implements привязывает к классу один или несколько интерфейсов, которые класс должен реализовать.
#java #lesson #oop
NullPointer Exception
Исключения нулевого указателя возникает в Java довольно часто при попытке вызова метода несуществующего объекта.
Возьмем для примера следующую строчку кода:
Если объект school окажется равен
Хорошей практикой разработки на Java является предварительная проверка на
#lesson #bug
Исключения нулевого указателя возникает в Java довольно часто при попытке вызова метода несуществующего объекта.
Возьмем для примера следующую строчку кода:
int noOfStudents = school.listStudents().count;
Если объект school окажется равен
Null
или его метод listStudents
вернет Null
, вы получите исключение NullPointerException
.Хорошей практикой разработки на Java является предварительная проверка на
Null
в методах (смотри на картинке).#lesson #bug
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
Оптимизация строк
При конкатенации строк на Java с помощью оператора +, например, в цикле for, каждый раз создается новый объект String, что приводит к потере памяти и увеличению времени работы программы.
Также следует избегать создания Java строки с помощью конструктора класса: (смотри на фото)
#lesson #string
При конкатенации строк на Java с помощью оператора +, например, в цикле for, каждый раз создается новый объект String, что приводит к потере памяти и увеличению времени работы программы.
Также следует избегать создания Java строки с помощью конструктора класса: (смотри на фото)
#lesson #string
Одинарные и двойные кавычки
Что вы ожидаете получить от этого кода?
Казалось бы, должна вернуться строка
Двойные кавычки обрабатывают символы как строки, но одинарные ведут себя иначе. Они преобразуют символьные операнды (
#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
Можно ли использовать этот код для точного определения нечетности числа?
Надеюсь, вы заметили подвох. Если мы решим проверить таким образом отрицательное нечетное число (-5, к примеру), остаток от деления не будет равен единице (а чему он равен?). Поэтому используйте более точный метод:
Он не только решает проблему отрицательных чисел, но и работает более продуктивно, чем его предшественник. Арифметические и логические операции выполняются гораздо быстрее умножения и деления.
#lesson #number
Надеюсь, вы заметили подвох. Если мы решим проверить таким образом отрицательное нечетное число (-5, к примеру), остаток от деления не будет равен единице (а чему он равен?). Поэтому используйте более точный метод:
public boolean oddOrNot(int num) {
return (num & 1) != 0;
}
Он не только решает проблему отрицательных чисел, но и работает более продуктивно, чем его предшественник. Арифметические и логические операции выполняются гораздо быстрее умножения и деления.
#lesson #number
Строки в Java
По своей сути, строки — это массив символов char, обёрнутый в класс String. Такая обёртка позволяет обрабатывать строку всеми возможными методами: split, join, trim и другими.
Особенность строк Java в том, что они — ссылочные и неизменяемые. Это позволяет оптимизировать занимаемую память строкой.
#lesson
По своей сути, строки — это массив символов char, обёрнутый в класс String. Такая обёртка позволяет обрабатывать строку всеми возможными методами: split, join, trim и другими.
Особенность строк Java в том, что они — ссылочные и неизменяемые. Это позволяет оптимизировать занимаемую память строкой.
#lesson
Массив 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
Инструмент StreamAPI
Думаем, любой программист наслышан о том, как просто можно обрабатывать списки в таких языках, как Python.
Java тоже не обделена подобными особенностями, а в частности — она имеет SteamAPI. Это некий набор объектов и методов, которые позволяют обрабатывать списки.
P.S.: В следующих уроках под тегом #stream мы будем подробно рассказывать о методах обработки
#java #lesson #stream
Думаем, любой программист наслышан о том, как просто можно обрабатывать списки в таких языках, как Python.
Java тоже не обделена подобными особенностями, а в частности — она имеет SteamAPI. Это некий набор объектов и методов, которые позволяют обрабатывать списки.
P.S.: В следующих уроках под тегом #stream мы будем подробно рассказывать о методах обработки
#java #lesson #stream
Ключевые типы и их классы
Структура языка Java сильно завязана на ООП. По этой причине, практически всё с чем вы взаимодействуете в Java — объект.
Даже привычные для всех типы int, float, char и так далее — это всё сокращения объекта. Другими словами, их легко можно заменить соответствующими им классами: Integer, Float и Character.
Однако, у сокращений типов есть одна особенность — они не могут быть null.
#java #lesson #theory
Структура языка Java сильно завязана на ООП. По этой причине, практически всё с чем вы взаимодействуете в Java — объект.
Даже привычные для всех типы int, float, char и так далее — это всё сокращения объекта. Другими словами, их легко можно заменить соответствующими им классами: Integer, Float и Character.
Однако, у сокращений типов есть одна особенность — они не могут быть null.
#java #lesson #theory
implements и extends
Одной из основных догм в ООП является наследование. В Java можно наследовать как и классы, так и интерфейсы, но делается это по-разному.
Ключевое слово extends привязывает к классу родительский класс и только один. В своё время ключевое слово implements привязывает к классу один или несколько интерфейсов, которые класс должен реализовать.
#java #lesson #oop
Одной из основных догм в ООП является наследование. В Java можно наследовать как и классы, так и интерфейсы, но делается это по-разному.
Ключевое слово extends привязывает к классу родительский класс и только один. В своё время ключевое слово implements привязывает к классу один или несколько интерфейсов, которые класс должен реализовать.
#java #lesson #oop
Одинарные и двойные кавычки
Что вы ожидаете получить от этого кода?
Казалось бы, должна вернуться строка HaHa, но на деле будет Ha169.
Двойные кавычки обрабатывают символы как строки, но одинарные ведут себя иначе. Они преобразуют символьные операнды ('H' и 'a') к целочисленным значениям через расширение примитивных типов – получается 169.
#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
Строки в Java
По своей сути, строки — это массив символов char, обёрнутый в класс String. Такая обёртка позволяет обрабатывать строку всеми возможными методами: split, join, trim и другими.
Особенность строк Java в том, что они — ссылочные и неизменяемые. Это позволяет оптимизировать занимаемую память строкой.
#lesson
По своей сути, строки — это массив символов char, обёрнутый в класс String. Такая обёртка позволяет обрабатывать строку всеми возможными методами: split, join, trim и другими.
Особенность строк Java в том, что они — ссылочные и неизменяемые. Это позволяет оптимизировать занимаемую память строкой.
#lesson