Similar presentations:
Основы языка Kotlin
1.
Урок 1:Основы языка Kotlin
Android Development with Kotlin v1.0
This work is licensed under the Apache 2 license.
1
2.
ПланLesson 1: Основы Kotlin
○
○
○
○
○
○
○
○
Установка среды
Операторы
Типы данных
Переменные
Условные операторы
Списки и массивы
NULL безопасность
Краткое содержание
Android Development with Kotlin
This work is licensed under the Apache 2 license.
2
3.
Установка средыAndroid Development with Kotlin
This work is licensed under the Apache 2 license.
3
4.
Среда IntelliJ IDEAAndroid Development with Kotlin
This work is licensed under the Apache 2 license.
4
5.
Создание нового проектаAndroid Development with Kotlin
This work is licensed under the Apache 2 license.
5
6.
Название проекта
Android Development with Kotlin
This work is licensed under the Apache 2 license.
6
7.
Открыть REPL (Read-Eval-Print-Loop)Прежде чем меню Kotlin
появится в разделе
Tools, может пройти
несколько секунд.
Android Development with Kotlin
This work is licensed under the Apache 2 license.
7
8.
Создайте функцию printHello()Нажмите
Control+Enter
(Command+Enter on
a Mac).
Android Development with Kotlin
This work is licensed under the Apache 2 license.
8
9.
ОператорыAndroid Development with Kotlin
This work is licensed under the Apache 2 license.
9
10.
Операторы● Математические операторы
+ - * / %
● Операторы инкремент и декремент
++ --
● Операторы сравнения
< <=
● Оператор присвоения
=
● Операторы равенства
== !=
Android Development with Kotlin
> >=
This work is licensed under the Apache 2 license.
10
11.
Математические операторы сцелыми числами
1 + 1
=>
2
53 - 3
=>
50
50 / 10
=>
5
9 % 3
=>
0
Android Development with Kotlin
This work is licensed under the Apache 2 license.
11
12.
Математические операторы с вещественными числами1.0 / 2.0
=>
0.5
2.0 * 3.5
=>
7.0
Android Development with Kotlin
This work is licensed under the Apache 2 license.
12
13.
Математические операторы1+1
1.0/2.0
⇒ kotlin.Int = 2
⇒ kotlin.Double = 0.5
53-3
2.0*3.5
⇒ kotlin.Int = 50
⇒ kotlin.Double = 7.0
50/10
⇒ kotlin.Int = 5
Android Development with Kotlin
⇒ указывает
вывод вашего
кода
Результат
включает тип
(kotlin.Int).
This work is licensed under the Apache 2 license.
13
14.
Методы числовых операторовKotlin сохраняет числа как примитивы, но позволяет вызывать
методы для чисел, как если бы они были объектами.
2.times(3)
⇒ kotlin.Int = 6
3.5.plus(4)
⇒ kotlin.Double = 7.5
2.4.div(2)
⇒ kotlin.Double =
1.2
Android Development with Kotlin
This work is licensed under the Apache 2 license.
14
15.
Типы данныхAndroid Development with Kotlin
This work is licensed under the Apache 2 license.
15
16.
Целочисленные типыType
Bits
Notes
Long
64
From -263 to 263-1
Int
32
From -231 to 231-1
Short
16
From -32768 to 32767
Byte
8
From -128 to 127
Android Development with Kotlin
This work is licensed under the Apache 2 license.
16
17.
Числовые типы с плавающей запятой и другиечисловые типы
Type
Bits
Notes
Double
64
16 - 17 значащих цифр
Float
32
6 - 7 значащих цифр
Char
16
16-bit Unicode символ
Boolean
8
True или false. Операции включают в себя:
|| - или, && - и,
! - отрицание
Android Development with Kotlin
This work is licensed under the Apache 2 license.
17
18.
Типы операндовРезультаты операций сохраняют типы операндов.
6*50
⇒ kotlin.Int = 300
1/2
⇒ kotlin.Int = 0
6.0*50.0
⇒ kotlin.Double = 300.0
1.0*2.0
⇒ kotlin.Double = 0.5
6.0*50
⇒ kotlin.Double = 300.0
Android Development with Kotlin
This work is licensed under the Apache 2 license.
18
19.
ПримерAssign an Int to a Byte
val i: Int = 6
val b: Byte = i
println(b)
⇒ error: type mismatch: inferred type is Int but Byte was
expected
Convert Int to Byte with casting
val i: Int = 6
println(i.toByte())
⇒ 6
Android Development with Kotlin
This work is licensed under the Apache 2 license.
19
20.
Подчеркивания для длинных чиселИспользуйте символы подчеркивания, чтобы сделать длинные
числовые константы более читабельными.
val oneMillion = 1_000_000
val idNumber = 999_99_9999L
val hexBytes = 0xFF_EC_DE_5E
val bytes = 0b11010010_01101001_10010100_10010010
Android Development with Kotlin
This work is licensed under the Apache 2 license.
20
21.
СтрокиСтроки — это любая последовательность символов, заключенная в двойные
кавычки.
val s1 = "Hello world!"
Строковые литералы могут содержать escape-символы.
val s2 = "Hello world!\n"
Или любой произвольный текст, ограниченный тройной кавычкой(""")
val text = """
var bikes = 50
"""
Android Development with Kotlin
This work is licensed under the Apache 2 license.
21
22.
Объединение строкval numberOfDogs = 3
val numberOfCats = 2
"I have $numberOfDogs dogs" + " and $numberOfCats cats"
=> I have 3 dogs and 2 cats
Android Development with Kotlin
This work is licensed under the Apache 2 license.
22
23.
Строковые шаблоныВыражение шаблона начинается со знака доллара ($) и может быть
простым значением:
val i = 10
println("i = $i")
i = 10 внутри фигурных скобок:
Или =>
выражение
val s = "abc"
println("$s.length is ${s.length}")
=> abc.length is 3
Android Development with Kotlin
This work is licensed under the Apache 2 license.
23
24.
Строковые выражения шаблонаval numberOfShirts = 10
val numberOfPants = 5
"I have ${numberOfShirts + numberOfPants} items of clothing"
=> I have 15 items of clothing
Android Development with Kotlin
This work is licensed under the Apache 2 license.
24
25.
ПеременныеAndroid Development with Kotlin
This work is licensed under the Apache 2 license.
25
26.
Переменные● Определение типа
● Компилятор сам определяет тип
● Явно определяется тип
● Изменяемые и неизменяемые переменные
● Неизменяемость не обязательна, но
рекомендуется
Котлин — статически типизированный язык. Тип определяется во
время компиляции и в последствии не изменяется.
Android Development with Kotlin
This work is licensed under the Apache 2 license.
26
27.
Указание типа переменнойОбозначение двоеточием
var width: Int = 12
var length: Double = 2.5
Важно: после того как тип был назначен вами или компилятором, вы
не сможете изменить тип или получите сообщение об ошибке.
Android Development with Kotlin
This work is licensed under the Apache 2 license.
27
28.
Изменяемые и неизменяемые переменные● Изменяемая
var score = 10
● Неизменяемая(константа)
val name = "Jennifer"
Хотя это и не является строго обязательным, в большинстве случаев
рекомендуется использовать неизменяемые переменные.
Android Development with Kotlin
This work is licensed under the Apache 2 license.
28
29.
var и valvar count = 1
count = 2
val size = 1
size = 2
=> Error: val не может быть переназначен
Android Development with Kotlin
This work is licensed under the Apache 2 license.
29
30.
Условные операторыAndroid Development with Kotlin
This work is licensed under the Apache 2 license.
30
31.
Поток управленияKotlin предлагает несколько способов реализации
условной логики:
● If/Else объявление
● When объявление
● For цикл
● While цикл
Android Development with Kotlin
This work is licensed under the Apache 2 license.
31
32.
if/else объявлениеval numberOfCups = 30
val numberOfPlates = 50
if (numberOfCups > numberOfPlates) {
println("Too many cups!")
} else {
println("Not enough cups!")
}
=> Not enough cups!
Android Development with Kotlin
This work is licensed under the Apache 2 license.
32
33.
if объявление с несколькими веткамиval guests = 30
if (guests == 0) {
println("No guests")
} else if (guests < 20) {
println("Small group of people")
} else {
println("Large group of people!")
}
⇒ Large group of people!
Android Development with Kotlin
This work is licensed under the Apache 2 license.
33
34.
Диапазоны● Тип данных, содержащий диапазон сопоставимых значений
(например, целые числа от 1 до 100 включительно).
● Диапазоны ограничены
● Объекты внутри диапазона могут быть изменяемыми или
неизменяемыми.
Android Development with Kotlin
This work is licensed under the Apache 2 license.
34
35.
Диапазоны в if/else объявленияхval numberOfStudents = 50
if (numberOfStudents in 1..100) {
println(numberOfStudents)
}
=> 50
Примечание. Вокруг оператора «диапазон до» (1..100) нет пробелов.
Android Development with Kotlin
This work is licensed under the Apache 2 license.
35
36.
when объявлениеwhen (results) {
0
-> println("No results")
in 1..39 -> println("Got results!")
else -> println("That's a lot of results!")
}
⇒ That's a lot of results!
Помимо оператора When, вы также можете определить выражение,
которое будет возвращено.
Android Development with Kotlin
This work is licensed under the Apache 2 license.
36
37.
for циклval pets = arrayOf("dog", "cat", "canary")
for (element in pets) {
print(element + " ")
}
⇒ dog cat canary
Вам не нужно определять переменную-итератор и увеличивать ее при
каждом проходе.
Android Development with Kotlin
This work is licensed under the Apache 2 license.
37
38.
for цикл: элементы и индексыfor ((index, element) in pets.withIndex()) {
println("Item at $index is $element\n")
}
⇒ Item at 0 is dog
Item at 1 is cat
Item at 2 is canary
Android Development with Kotlin
This work is licensed under the Apache 2 license.
38
39.
for циклы: размеры и диапазоны шаговfor (i in 1..5) print(i)
⇒ 12345
for (i in 5 downTo 1) print(i)
⇒ 54321
for (i in 3..6 step 2) print(i)
⇒ 35
for (i in 'd'..'g') print (i)
⇒ defg
Android Development with Kotlin
This work is licensed under the Apache 2 license.
39
40.
while циклыvar bicycles = 0
while (bicycles < 50) {
bicycles++
}
println("$bicycles bicycles in the bicycle rack\n")
⇒ 50 bicycles in the bicycle rack
do {
bicycles-} while (bicycles > 50)
println("$bicycles bicycles in the bicycle rack\n")
⇒ 49 bicycles in the bicycle rack
Android Development with Kotlin
This work is licensed under the Apache 2 license.
40
41.
repeat циклыrepeat(2) {
print("Hello!")
}
⇒ Hello!Hello!
Android Development with Kotlin
This work is licensed under the Apache 2 license.
41
42.
Списки и массивыAndroid Development with Kotlin
This work is licensed under the Apache 2 license.
42
43.
Списки● Списки — это упорядоченные коллекции элементов
● Доступ к элементам списка можно получить программно
через их индексы.
● Элементы могут встречаться в списке более одного
раза
Примером списка является предложение: это группа слов, их порядок
важен, и они могут повторяться.
Android Development with Kotlin
This work is licensed under the Apache 2 license.
43
44.
Неизменяемый список с использованием listOf()Объявите список, используя listOf() и распечатай это.
val instruments = listOf("trumpet", "piano", "violin")
println(instruments)
⇒ [trumpet, piano, violin]
Android Development with Kotlin
This work is licensed under the Apache 2 license.
44
45.
Изменяемый список с использованием mutableListOf()Списки можно изменить с помощью mutableListOf()
val myList = mutableListOf("trumpet", "piano", "violin")
myList.remove("violin")
⇒ kotlin.Boolean = true
Если список определен с помощью val, вы не можете изменить список, на
который ссылается переменная, но вы все равно можете изменить
содержимое списка.
Android Development with Kotlin
This work is licensed under the Apache 2 license.
45
46.
Массивы● Массивы хранят несколько элементов
● Доступ к элементам массива можно получить
программно через их индексы.
● Элементы массива изменяемы
● Размер массива фиксирован
Android Development with Kotlin
This work is licensed under the Apache 2 license.
46
47.
Массив использует arrayOf()Массив строк можно создать с помощью arrayOf()
val pets = arrayOf("dog", "cat", "canary")
println(java.util.Arrays.toString(pets))
⇒ [dog, cat, canary]
Если массив определен с помощью val, вы не можете изменить, к какому
массиву относится переменная, но вы все равно можете изменить
содержимое массива.
Android Development with Kotlin
This work is licensed under the Apache 2 license.
47
48.
Массивы со смешанными или одиночными типамиМассив может содержать разные типы.
val mix = arrayOf("hats", 2)
Массив также может содержать только один тип (в данном случае целые
числа).
val numbers = intArrayOf(1, 2, 3)
Android Development with Kotlin
This work is licensed under the Apache 2 license.
48
49.
Объединение массивовИспользуйте операатор +.
val numbers = intArrayOf(1,2,3)
val numbers2 = intArrayOf(4,5,6)
val combined = numbers2 + numbers
println(Arrays.toString(combined))
=> [4, 5, 6, 1, 2, 3]
Android Development with Kotlin
This work is licensed under the Apache 2 license.
49
50.
Null безопасностьAndroid Development with Kotlin
This work is licensed under the Apache 2 license.
50
51.
Null безопасность● В Котлине переменные по умолчанию не могут быть
нулевыми.
● Вы можете явно присвоить переменной значение null,
используя оператор безопасного вызова.
● Разрешите исключения нулевого указателя, используя !!
оператор
● Вы можете проверить значение null, используя
оператор elvis (?:)
Android Development with Kotlin
This work is licensed under the Apache 2 license.
51
52.
Переменные не могут быть нулевымиВ Kotlin, по умолчанию null переменные не разрешены.
Объявите Int и присвойте ему значение null.
var numberOfBooks: Int = null
⇒ error: null не может быть значением ненулевого типа Int
Android Development with Kotlin
This work is licensed under the Apache 2 license.
52
53.
Безопасный вызов оператораОператор безопасного вызова (?) после типа указывает, что переменная
может иметь значение null.
Объявить Int? как обнуляемая переменная
var numberOfBooks: Int? = null
Не устанавливайте для переменной значение null, поскольку это может
иметь нежелательные последствия.
Android Development with Kotlin
This work is licensed under the Apache 2 license.
53
54.
Проверка на нольПроверьте, не имеет ли значение переменная NumberOfBooks значение
NULL. Затем уменьшите эту переменную.
var numberOfBooks = 6
if (numberOfBooks != null) {
numberOfBooks = numberOfBooks.dec()
}
Теперь посмотрим на способ написания этого кода в Kotlin с
использованием оператора безопасного вызова.
var numberOfBooks = 6
numberOfBooks = numberOfBooks?.dec()
Android Development with Kotlin
This work is licensed under the Apache 2 license.
54
55.
Оператор !!Если вы уверены, что переменная не будет нулевой, используйте !! чтобы
принудительно перевести переменную в ненулевой тип. Затем вы можете
вызвать на нем методы/свойства.
val len = s!!.length
выдает NullPointerException, если s имеет значение null
Предупреждение: Так как !! выдаст исключение, его следует
использовать только в том случае, если сохранение нулевого значения
является исключительным.
Android Development with Kotlin
This work is licensed under the Apache 2 license.
55
56.
Оператор ElvisСвязывайте проверку на null с помощью оператора ?:
numberOfBooks = numberOfBooks?.dec() ?: 0
The ?: operator is sometimes called the "Elvis operator," because it's like a smiley
on its side with a pompadour hairstyle, like Elvis Presley styled his hair.
Android Development with Kotlin
This work is licensed under the Apache 2 license.
56
57.
Краткое содержаниеAndroid Development with Kotlin
This work is licensed under the Apache 2 license.
57
58.
SummaryIn Lesson 1, you learned how to:
Создайте проект IntelliJ IDEA, откройте REPL и выполните функцию.
Используйте операторы и методы числовых операторов.
Используйте типы данных, приведение типов, строки и шаблоны строк.
Используйте переменные и вывод типов, а также изменяемые и
неизменяемые переменные.
● Используйте условные выражения, поток управления и циклические
структуры.
● Используйте списки и массивы
● Используйте нулевые функции безопасности Kotlin.
Android Development with Kotlin
This work is licensed under the Apache 2 license.
58
59.
ПрактикаПрактикуйте то, что вы узнали, пройдя по
ссылке
Lesson 1: Kotlin basics
Android Development with Kotlin
This work is licensed under the Apache 2 license.
59