Слайд 2
![История JetBrains Язык разрабатывается с 2010 года 15 февраля 2016](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/251736/slide-1.jpg)
История
JetBrains
Язык разрабатывается с 2010 года
15 февраля 2016 года - релиз
Май 2017
года - Kotlin официальный инструмент разработки для ОС Android
Ноябрь 2017 года - выход Android Studio 3.0 с доступным по умолчанию Kotlin-ом
Текущая версия 1.2.31
Май 2018 года - основной язык разработки для OC Android???
Слайд 3
![](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/251736/slide-2.jpg)
Слайд 4
![Компилируется в JVM JavaScript Machine code Windows (x86_64 only at](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/251736/slide-3.jpg)
Компилируется в
JVM
JavaScript
Machine code
Windows (x86_64 only at the moment)
Linux (x86_64, arm32, MIPS,
MIPS little endian)
MacOS (x86_64)
iOS (arm64 only)
Android (arm32 and arm64)
WebAssembly (wasm32 only)
Слайд 5
![](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/251736/slide-4.jpg)
Слайд 6
![Базовые типы](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/251736/slide-5.jpg)
Слайд 7
![Функция](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/251736/slide-6.jpg)
Слайд 8
![Функция](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/251736/slide-7.jpg)
Слайд 9
![Строковые шаблоны](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/251736/slide-8.jpg)
Слайд 10
![Модификаторы доступа public - по умолчанию. Не пишется в явном](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/251736/slide-9.jpg)
Модификаторы доступа
public - по умолчанию. Не пишется в явном виде
private -
видимость внутри данного класса
в Kotlin внешний класс не видит private члены своих вложенных классов.
protected - видимость для наследников
Если вы переопределите protected член и явно не укажете его видимость, переопределённый элемент также будет иметь модификатор доступа protected.
internal - видимость в области модуля
Слайд 11
![Класс. Constructor](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/251736/slide-10.jpg)
Слайд 12
![Класс. Constructor. Вторичный](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/251736/slide-11.jpg)
Класс. Constructor. Вторичный
Слайд 13
![Класс. init](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/251736/slide-12.jpg)
Слайд 14
![Класс. Getter. Setter.](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/251736/slide-13.jpg)
Слайд 15
![Класс. Getter. Setter.](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/251736/slide-14.jpg)
Слайд 16
![Класс. Getter. Setter.](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/251736/slide-15.jpg)
Слайд 17
![Класс. Наследование. Parent.](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/251736/slide-16.jpg)
Класс. Наследование. Parent.
Слайд 18
![Класс. Наследование. Child.](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/251736/slide-17.jpg)
Класс. Наследование. Child.
Слайд 19
![Интерфейс](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/251736/slide-18.jpg)
Слайд 20
![Интерфейс. Реализация.](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/251736/slide-19.jpg)
Слайд 21
![Дата класс = POJO](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/251736/slide-20.jpg)
Слайд 22
![](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/251736/slide-21.jpg)
Слайд 23
![NULL.NULL.NULL.NULL.NULL.NULL.NULL!!NULL.NULL.NULL. Сокращение для "Если не null" val name: String? =](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/251736/slide-22.jpg)
NULL.NULL.NULL.NULL.NULL.NULL.NULL!!NULL.NULL.NULL.
Сокращение для "Если не null"
val name: String? = “Name”
name?.length
Сокращение для "Если
не null, иначе"
name?.length ?: “default name”
Вызов оператора при равенстве null
name?.length ?: throw IllegalStateException("name is missing!")
NULL!!(можно указать явно, что будет null)
name!!.length
Слайд 24
![NULL.NULL.NULL.NULL.NULL.NULL.NULL!!NULL.NULL.NULL. Выполнение при неравенстве null: activity?.let { activity -> name?.let { activity.setUserName(“My name $name”) } }](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/251736/slide-23.jpg)
NULL.NULL.NULL.NULL.NULL.NULL.NULL!!NULL.NULL.NULL.
Выполнение при неравенстве null:
activity?.let { activity ->
name?.let {
activity.setUserName(“My name $name”)
}
}
Слайд 25
![NULL.NULL.NULL.NULL.NULL.NULL.NULL!!NULL.NULL.NULL.](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/251736/slide-24.jpg)
NULL.NULL.NULL.NULL.NULL.NULL.NULL!!NULL.NULL.NULL.
Слайд 26
![Обработка nullable Boolean](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/251736/slide-25.jpg)
Обработка nullable Boolean
Слайд 27
![Switch. Case.](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/251736/slide-26.jpg)
Слайд 28
![Цикл](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/251736/slide-27.jpg)
Слайд 29
![Операторы перехода return break continue Любое выражение в Kotlin может](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/251736/slide-28.jpg)
Операторы перехода
return
break
continue
Любое выражение в Kotlin может быть помечено меткой label. Метки
имеют идентификатор в виде знака @
Слайд 30
![Приведение типов](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/251736/slide-29.jpg)
Слайд 31
![Лямбда. It.](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/251736/slide-30.jpg)
Слайд 32
![Расширение](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/251736/slide-31.jpg)
Слайд 33
![Companion object](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/251736/slide-32.jpg)
Слайд 34
![Companion object](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/251736/slide-33.jpg)
Слайд 35
![Именованные аргументы](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/251736/slide-34.jpg)
Слайд 36
![FindViewById(R.id.view_name)](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/251736/slide-35.jpg)
FindViewById(R.id.view_name)
Слайд 37
![](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/251736/slide-36.jpg)
Слайд 38
![](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/251736/slide-37.jpg)
Слайд 39
![](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/251736/slide-38.jpg)