💻 Изучаем Kotlin с нуля
Несмотря на свою молодость, Kotlin уже успел стать серьёзным и популярным языком программирования. И даже стал официальным языком разработки под Android, его рекомендует сам Google.
А всё потому что он очень удачно исправил многие неприятные моменты, которые были в Java и добавил огромное количество фишек, которые невероятно радуют разработчиков.
В этом плейлисте вы узнаете о всех базовых механизмах, которые есть как в Kotlin, так и в многих других языках программирования. А ближе к концу вы также научитесь использовать и фишки, которые предлагает только Kotlin.
1. Введение
[10:52]
2. Строковые шаблоны
[6:11]
3. Переменные: val vs var
[8:53]
4. Типы данных в Kotlin
[10:33]
5. Функции
[5:57]
6. NullPointerException и null-safety
[8:03]
7. Работа с классами и их свойствами
[12:34]
8. Пакеты, импортирование методов и классов
[11:44]
Несмотря на свою молодость, Kotlin уже успел стать серьёзным и популярным языком программирования. И даже стал официальным языком разработки под Android, его рекомендует сам Google.
А всё потому что он очень удачно исправил многие неприятные моменты, которые были в Java и добавил огромное количество фишек, которые невероятно радуют разработчиков.
В этом плейлисте вы узнаете о всех базовых механизмах, которые есть как в Kotlin, так и в многих других языках программирования. А ближе к концу вы также научитесь использовать и фишки, которые предлагает только Kotlin.
1. Введение
[10:52]
2. Строковые шаблоны
[6:11]
3. Переменные: val vs var
[8:53]
4. Типы данных в Kotlin
[10:33]
5. Функции
[5:57]
6. NullPointerException и null-safety
[8:03]
7. Работа с классами и их свойствами
[12:34]
8. Пакеты, импортирование методов и классов
[11:44]
YouTube
Kotlin: Урок 0. Введение
Стань Android-разработчиком: https://goo.gl/tr57tS.
Поспеши, действуют приятные скидки!
Сайт: http://devcolibri.com
Вконтакте: https://vk.com/devcolibri
Telegram: https://telegram.me/dcolibri
Twitter: https://twitter.com/devcolibri
Facebook: https://ww…
Поспеши, действуют приятные скидки!
Сайт: http://devcolibri.com
Вконтакте: https://vk.com/devcolibri
Telegram: https://telegram.me/dcolibri
Twitter: https://twitter.com/devcolibri
Facebook: https://ww…
Инкапсуляция
Инкапсуляция в Java является механизмом обёртывания данных (переменных) и кода, работающего с данными (методами), в одно целое. В инкапсуляции переменные класса будут скрыты от других классов и доступ к ним может быть получен только с помощью метода их текущего класса. По-другому это называется скрытием данных.
Для достижения инкапсуляции в Java:
☕️ Объявите переменные класса как private.
☕️ Предоставьте public к методам установки и получения (сеттеру и геттеру) для изменения и просмотра значений переменных.
Преимущества инкапсуляции:
☕️ Поля класса можно сделать только для чтения или только для записи.
☕️ Класс может иметь полный контроль над тем, что хранится в его полях.
Инкапсуляция в Java является механизмом обёртывания данных (переменных) и кода, работающего с данными (методами), в одно целое. В инкапсуляции переменные класса будут скрыты от других классов и доступ к ним может быть получен только с помощью метода их текущего класса. По-другому это называется скрытием данных.
Для достижения инкапсуляции в Java:
☕️ Объявите переменные класса как private.
☕️ Предоставьте public к методам установки и получения (сеттеру и геттеру) для изменения и просмотра значений переменных.
Преимущества инкапсуляции:
☕️ Поля класса можно сделать только для чтения или только для записи.
☕️ Класс может иметь полный контроль над тем, что хранится в его полях.
Один день из жизни JVM-инженера
Можно разрабатывать на Java, а можно разрабатывать Java. Есть люди, чей код исполняет виртуальная машина — а есть люди, чей код и есть виртуальная машина.
Вроде бы те и другие существуют в одной Java-экосистеме, но задачи совершенно разные.
Чем он вообще занимается? Почему JVM-инженеры всё так медленно делают? На каком языке стоит писать рантайм, а на каком компилятор? Как «папка бога» в Windows привела к неожиданным последствиям? Может ли «обычный джавист» стать JVM-инженером?
https://habr.com/ru/companies/jugru/articles/719614/
Можно разрабатывать на Java, а можно разрабатывать Java. Есть люди, чей код исполняет виртуальная машина — а есть люди, чей код и есть виртуальная машина.
Вроде бы те и другие существуют в одной Java-экосистеме, но задачи совершенно разные.
Чем он вообще занимается? Почему JVM-инженеры всё так медленно делают? На каком языке стоит писать рантайм, а на каком компилятор? Как «папка бога» в Windows привела к неожиданным последствиям? Может ли «обычный джавист» стать JVM-инженером?
https://habr.com/ru/companies/jugru/articles/719614/
Хабр
Один день из жизни JVM-инженера
Можно разрабатывать на Java, а можно разрабатывать Java . Есть люди, чей код исполняет виртуальная машина — а есть люди, чей код и есть виртуальная машина . Вроде бы те и другие существуют в одной...
#Вопросы_с_собеседования
Что такое «абстракция»?
Абстрагирование – это способ выделить набор общих характеристик объекта, исключая из рассмотрения частные и незначимые. Соответственно, абстракция – это набор всех таких характеристик.
Представьте, что водитель едет в автомобиле по оживлённому участку движения. Понятно, что в этот момент он не будет задумываться о химическом составе краски автомобиля, особенностях взаимодействия шестерёнок в коробке передач или влияния формы кузова на скорость (разве что, автомобиль стоит в глухой пробке и водителю абсолютно нечем заняться). Однако, руль, педали, указатель поворота он будет использовать регулярно.
Что такое «абстракция»?
Абстрагирование – это способ выделить набор общих характеристик объекта, исключая из рассмотрения частные и незначимые. Соответственно, абстракция – это набор всех таких характеристик.
Представьте, что водитель едет в автомобиле по оживлённому участку движения. Понятно, что в этот момент он не будет задумываться о химическом составе краски автомобиля, особенностях взаимодействия шестерёнок в коробке передач или влияния формы кузова на скорость (разве что, автомобиль стоит в глухой пробке и водителю абсолютно нечем заняться). Однако, руль, педали, указатель поворота он будет использовать регулярно.
О разнице между лямбдами и обычными функциями и о имплементации лямбд в некторых языках программирования.
https://habr.com/ru/articles/732434/
https://habr.com/ru/articles/732434/
Хабр
О разнице между лямбдами и обычными функциями и о имплементации лямбд в некторых языках программирования
Цель настоящей статьи - изучить лямбда функции: чем они отличаются от обычных функций и изучить, как они реализованы в С++, Python 3 и Java. На протяжении этой статьи я буду использовать godbolt.org ,...
🧒👾Тест-игра на выживание: как джуну протянуть первую рабочую неделю и не потерять работу
Первая неделя на новой работе – это всегда стресс для разработчика. В голове тысяча мыслей, давление зашкаливает, и сердце стучит без остановки. Знаете ли вы, как в такой ситуации не перегореть на старте? Если да, тогда вы легко пройдете нашу мини-игру на выживание про адаптацию джуна в незнакомых условиях. Итак, представьте: желанный оффер уже получен, вас приняли в компанию вашей мечты и сегодня первый рабочий день.
🔗 Основной сайт
🔗 Зеркало
Первая неделя на новой работе – это всегда стресс для разработчика. В голове тысяча мыслей, давление зашкаливает, и сердце стучит без остановки. Знаете ли вы, как в такой ситуации не перегореть на старте? Если да, тогда вы легко пройдете нашу мини-игру на выживание про адаптацию джуна в незнакомых условиях. Итак, представьте: желанный оффер уже получен, вас приняли в компанию вашей мечты и сегодня первый рабочий день.
🔗 Основной сайт
🔗 Зеркало
Как за полчаса написать простую читалку книг FB2 для десктопа на Java.
https://habr.com/ru/articles/732412/
https://habr.com/ru/articles/732412/
Хабр
Как за полчаса написать простую читалку книг FB2 для десктопа на Java
Привет, Хабр! Недавно мне для личных целей потребовалось написать читалку FB2. И сразу я столкнулась с тем, что информации по теме минимум. Палочка-выручалочка под названием ChatGPT выдал что-то...
Interface for Consts
Очень часто встречаются интерфейсы для описания констант. Это не правильно с точки зрения ООП. Интерфейс должен описывать поведение, не больше не меньше. Этот пункт не очень принципиален, тем более что результат компиляции будет один и тот же, но все же java это ООП язык и было бы хорошо придерживаться его принципов.
Очень часто встречаются интерфейсы для описания констант. Это не правильно с точки зрения ООП. Интерфейс должен описывать поведение, не больше не меньше. Этот пункт не очень принципиален, тем более что результат компиляции будет один и тот же, но все же java это ООП язык и было бы хорошо придерживаться его принципов.
Что такое ООП?
• объектно-ориентированное программирование использует в качестве основных логических конструктивных элементов объекты, а не алгоритмы;
• каждый объект является экземпляром определенного класса
• классы образуют иерархии.
Программа считается объектно-ориентированной, только если выполнены все три указанных требования. В частности, программирование, не использующее наследование, называется не объектно-ориентированным, а программированием с помощью абстрактных типов данных.
Согласно парадигме
Объектно-ориентированное программирование
(ООП
) — методология программирования, основанная на представлении программы в виде совокупности объектов, каждый из которых является экземпляром определенного класса, а классы образуют иерархию наследования.• объектно-ориентированное программирование использует в качестве основных логических конструктивных элементов объекты, а не алгоритмы;
• каждый объект является экземпляром определенного класса
• классы образуют иерархии.
Программа считается объектно-ориентированной, только если выполнены все три указанных требования. В частности, программирование, не использующее наследование, называется не объектно-ориентированным, а программированием с помощью абстрактных типов данных.
Согласно парадигме
ООП
программа состоит из объектов, обменивающихся сообщениями. Объекты могут обладать состоянием, единственный способ изменить состояние объекта - послать ему сообщение, в ответ на которое, объект может изменить собственное состояние.Что представляет собой «обмен сообщениями»?
Объекты взаимодействуют, посылая и получая сообщения. Сообщение — это запрос на выполнение действия, дополненный набором аргументов, которые могут понадобиться при выполнении действия. В
Пусть требуется создать физическую модель, описывающую сталкивающиеся шары разных размеров. Традиционный подход к решению этой задачи примерно таков: определяется набор данных, описывающих каждый шар (например, его координаты, массу и ускорение); каждому шару присваивается уникальный идентификатор (например, организуется массив, значение индекса которого соответствует номеру шара), который позволит отличать каждый из шаров от всех других. Наконец, пишется подпрограмма с названием, скажем, bounce; эта процедура должна на основе номера шара и его начальных параметров соответствующим образом изменять данные, описывающие шар. В отличие от традиционного подхода объектно-ориентированная версия программы моделирует каждый из шаров посредством объекта. При этом объект, соответствующий конкретному шару, содержит не только его параметры, но и весь код, описывающий поведение шара при различных взаимодействиях. Так, каждый шар будет иметь собственный метод bounce(). Вместо того, чтобы вызывать подпрограмму bounce с аргументом, определяющим, скажем, шар №3, необходимо будет передать объекту «шар №3» сообщение, предписывающее ему выполнить столкновение.
Объекты взаимодействуют, посылая и получая сообщения. Сообщение — это запрос на выполнение действия, дополненный набором аргументов, которые могут понадобиться при выполнении действия. В
ООП
посылка сообщения (вызов метода) — это единственный путь передать управление объекту. Если объект должен «отвечать» на это сообщение, то у него должна иметься соответствующий данному сообщению метод. Так же объекты, используя свои методы, могут и сами посылать сообщения другим объектам. Обмен сообщениями реализуется с помощью динамических вызовов, что приводит к чрезвычайно позднему связыванию (extreme late binding
).Пусть требуется создать физическую модель, описывающую сталкивающиеся шары разных размеров. Традиционный подход к решению этой задачи примерно таков: определяется набор данных, описывающих каждый шар (например, его координаты, массу и ускорение); каждому шару присваивается уникальный идентификатор (например, организуется массив, значение индекса которого соответствует номеру шара), который позволит отличать каждый из шаров от всех других. Наконец, пишется подпрограмма с названием, скажем, bounce; эта процедура должна на основе номера шара и его начальных параметров соответствующим образом изменять данные, описывающие шар. В отличие от традиционного подхода объектно-ориентированная версия программы моделирует каждый из шаров посредством объекта. При этом объект, соответствующий конкретному шару, содержит не только его параметры, но и весь код, описывающий поведение шара при различных взаимодействиях. Так, каждый шар будет иметь собственный метод bounce(). Вместо того, чтобы вызывать подпрограмму bounce с аргументом, определяющим, скажем, шар №3, необходимо будет передать объекту «шар №3» сообщение, предписывающее ему выполнить столкновение.
Расскажите про основные понятия ООП: «класс», «объект», «интерфейс».
Класс – это способ описания сущности, определяющий состояние и поведение, зависящее от этого состояния, а также правила для взаимодействия с данной сущностью (контракт).
С точки зрения программирования класс можно рассматривать как набор данных (полей, атрибутов, членов класса) и функций для работы с ними (методов).
С точки зрения структуры программы, класс является сложным типом данных.
Объект (экземпляр) – это отдельный представитель класса, имеющий конкретное состояние и поведение, полностью определяемое классом. Каждый объект имеет конкретные значения атрибутов и методы, работающие с этими значениями на основе правил, заданных в классе.
Интерфейс – это набор методов класса, доступных для использования. Интерфейсом класса будет являться набор всех его публичных методов в совокупности с набором публичных атрибутов. По сути, интерфейс специфицирует класс, чётко определяя все возможные действия над ним.
Класс – это способ описания сущности, определяющий состояние и поведение, зависящее от этого состояния, а также правила для взаимодействия с данной сущностью (контракт).
С точки зрения программирования класс можно рассматривать как набор данных (полей, атрибутов, членов класса) и функций для работы с ними (методов).
С точки зрения структуры программы, класс является сложным типом данных.
Объект (экземпляр) – это отдельный представитель класса, имеющий конкретное состояние и поведение, полностью определяемое классом. Каждый объект имеет конкретные значения атрибутов и методы, работающие с этими значениями на основе правил, заданных в классе.
Интерфейс – это набор методов класса, доступных для использования. Интерфейсом класса будет являться набор всех его публичных методов в совокупности с набором публичных атрибутов. По сути, интерфейс специфицирует класс, чётко определяя все возможные действия над ним.
Еще один путь снизить боль при работе с Java проектами и их документированием.
https://habr.com/ru/articles/732564/
https://habr.com/ru/articles/732564/
Хабр
Еще один путь снизить боль при работе с Java проектами и их документированием
Ты не видел тут американскую подлодку? Видел. Куда она поплыла? Курс Зюйд-Зюйд-Вест. Ты не умничай, пальцем покажи. (С) бородатый анекдот За работу Уатт потребовал 1000 фунтов,...
Метод compareTo()
В Java метод compareTo() получает значение 0, если аргумент является строкой лексически равной данной строке; значение меньше 0, если аргумент является строкой лексически большей, чем сравниваемая строка; и значение больше 0, если аргумент является строкой лексически меньшей этой строки.
В Java метод compareTo() получает значение 0, если аргумент является строкой лексически равной данной строке; значение меньше 0, если аргумент является строкой лексически большей, чем сравниваемая строка; и значение больше 0, если аргумент является строкой лексически меньшей этой строки.
Программа на Java, убирающая все переносы в строке
Для замены всех переносов («\n») можно использовать функцию replace(). String replace() возвращает новый объект String, который содержит ту же последовательность символов, что и исходная строка, но с замененным символом.
Таким образом с помощью функции replace() можно заменять любые символы в строке на нужные.
Для замены всех переносов («\n») можно использовать функцию replace(). String replace() возвращает новый объект String, который содержит ту же последовательность символов, что и исходная строка, но с замененным символом.
Таким образом с помощью функции replace() можно заменять любые символы в строке на нужные.
Выберите лишнее
Anonymous Quiz
1%
Наследование
1%
Инкапсуляция
94%
Параллелизм
1%
Полиморфизм
4%
Абстракция
#дайджест
Собрали для вас подборку обучающих материалов по Spring. Сохраняйте себе:
☕️ Spring – лучший Java фреймворк для создания веб-приложений
☕️ Большой гайд. Пишем микросервисы на Java и Spring Boot, заворачиваем в Docker, запускаем на EKS, мониторим на Grafana
☕️ Зачем нужны профили в Spring?
☕️ Какие основные аннотации предлагает Spring Boot?
☕️ Техническое интервью Java Developer
☕️ Дорожная карта Spring Boot
☕️ Spring. Экспертное мнение о плюсах и минусах самого популярного Java-фреймворка
Собрали для вас подборку обучающих материалов по Spring. Сохраняйте себе:
☕️ Spring – лучший Java фреймворк для создания веб-приложений
☕️ Большой гайд. Пишем микросервисы на Java и Spring Boot, заворачиваем в Docker, запускаем на EKS, мониторим на Grafana
☕️ Зачем нужны профили в Spring?
☕️ Какие основные аннотации предлагает Spring Boot?
☕️ Техническое интервью Java Developer
☕️ Дорожная карта Spring Boot
☕️ Spring. Экспертное мнение о плюсах и минусах самого популярного Java-фреймворка
#вопросы_с_собеседований
Что подразумевают в плане принципов ООП выражения «является» и «имеет»?
«является» подразумевает наследование.
«имеет» подразумевает ассоциацию (агрегацию или композицию).
Что подразумевают в плане принципов ООП выражения «является» и «имеет»?
«является» подразумевает наследование.
«имеет» подразумевает ассоциацию (агрегацию или композицию).