English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

Основной курс Kotlin

Контроль потоков Kotlin

Функции в Kotlin

Строки в Kotlin

Kotlin направлен на объекты (OOP)

Переменные и основные типы Kotlin

В этом руководстве вы узнаете о переменных, как создавать переменные и основные типы данных, поддерживаемые Kotlin.

Как вы знаете, переменные - это место в памяти (области хранения), где хранятся данные.

Чтобы указать область хранения, каждой переменной следует присвоить уникальное имя (идентификатор). Узнайте больше оКак называть переменные в Kotlin?Более подробная информация

Как объявить переменную в Kotlin?

Чтобы объявить переменную в Kotlin, используйте ключевые слова var или val. Вот пример:

var language = "French"
val score = 95

В этой статье мы рассмотрим различия между использованием var и val.但现在让我们集中讨论 переменные.

Здесь, language - это переменная типа String, score - переменная типа Int. Вы не обязаны указывать тип переменной; Kotlin сделает это автоматически. Компилятор знает это, исходя из инициализационного выражения (в上面的 программе "French" - это строка, а 95 - целое число). В программировании это называется Инференция типов.

Но если вам нужно выполнить следующие действия, вы можете явно указать тип:

var language: String = "French"
val score: Int = 95

В примере, приведенном выше, мы инициализировали переменные в процессе объявления. Но это не обязательно. Вы можете объявить переменную и указать ее тип в одном предложении, а затем�始化 переменную в другом предложении в программе.

var language: String // Объявление переменной типа String
... .. ...
language = "French" // Инициализация переменной
val score: Int // Объявление переменной типа Int
... .. ...
score = 95 // Инициализация переменной

Вот несколько примеров ошибок.

var language // Ошибка 
language = "French"

Здесь переменная language не указана тип переменной и не инициализирована на этапе объявления.

var language: String
language = 14 // Ошибка

Здесь мы пытаемся присвоить целочисленное значение 14 переменной различного типа (String), что также вызывает ошибку.

Разница между var и val

  • val(Неизменяемая ссылка) - После назначения значения переменная, объявленная с помощью ключевого слова val, не может быть изменена. Это аналогично переменной final в Java.

  • var(Изменяемая ссылка) - Переменные, объявленные с помощью ключевого слова var, можно изменить позже в программе. Это соответствует обычной переменной Java.

Вот несколько примеров:

var language = "French"
language = "German"

Здесь переменная language перераспределена значение German. Поскольку переменная была объявлена с помощью var, этот код работает без ошибок.

val language = "French"
language = "German" // Ошибка

В примере выше вы не можете перераспределить значение переменной language на German, так как переменная была объявлена с помощью val.

Теперь, когда вы знаете, что такое переменная Kotlin, настало время изучить различные значения, которые может принимать переменная Kotlin.

Основные типы Kotlin

Kotlin - это статический тип языка, аналогичный Java. Это означает, что тип переменной известен на этапе компиляции. Например:

val language: Int
val marks = 12.3

Здесь компилятор знает, что тип переменной language - Int, и до компиляции marks имеет тип Double.

Внутренние типы Kotlin можно классифицировать как:

  • Числа (числа)

  • Знаки (characters)

  • Булевы (booleans)

  • Массивы (arrays)

Типы данных чисел в Kotlin (Numbers)

Числа в Kotlin аналогичны числам в Java. Есть 6 встроенных типов данных для чисел.

  • Byte

  • Short

  • Int

  • Long

  • Float

  • Double

1、тип Byte

  • Диапазон значений типа Byte варьируется от -128 до 127 (8-битное знаковое кодирование в двоичном формате).

  • если можно определить, что значение переменной находится в диапазоне [-128, 127], то можно использовать его вместо Int или других типов данных для экономии памяти.

fun main(args: Array<String>) {
    val range: Byte = 112
    println("$range")
    //下面的代码显示错误。为什么?
    // val range1: Byte = 200
}

При запуске программы выводится:

112

2、тип Short

  • Диапазон значений типа Short варьируется от -32768 до 32767 (16-битное знаковое кодирование в двоичном формате).

  • если можно определить, что значение переменной находится в диапазоне [-32768, 32767], то можно использовать его вместо других типов данных для экономии памяти.

fun main(args: Array<String>) {
    val temperature: Short = -11245
    println("$temperature")
}

При запуске программы выводится:

-11245

3、тип Int

  • Диапазон значений типа Int варьируется от -231 до 231-1 (32-битное знаковое кодирование в двоичном формате).

fun main(args: Array<String>) {
    val score: Int = 100000
    println("$score")
}

При запуске программы выводится:

100000

если вам назначено -231 до 231если переменной назначено -2

fun main(args: Array<String>) {
   // score — тип Int
    val score = 10
    println("$score")
}

если используется IntelliJ IDEA, то можно установить курсор на переменную и затем нажать Ctrl + Shift + P, чтобы увидеть тип.

4、тип Long

  • Диапазон значений типа Long варьируется от -263 до 263-1 (64-битное знаковое кодирование в двоичном формате).

fun main(args: Array<String>) {
    val highestScore: Long = 9999
    println("$highestScore")
}

При запуске программы выводится:

9999

если переменной назначено больше 231-1 или меньше -231 的整数值(未明确指定其类型),则该变量将为 Long 类型。例如,

val distance = 10000000000 // Long类型的变量distance

Таким же образом, вы можете использовать заглавные буквы L для указания типа переменной как Long. Например,

val distance = 100L  // значение distance типа Long

5. Тип данных Double

  • Тип данных Double является двойной точностью 64-битным плавающей запятой.

fun main(args: Array<String>) {
    // distance является типом Double
    val distance = 999.5
    println("$distance")
}

При запуске программы выводится:

999.5

6. Тип данных Float

  • Тип данных Float является одинарной точностью 32-битным плавающей запятой.

fun main(args: Array<String>) {
    // distance является типом Float
    val distance = 19.5F
    println("$distance")
}

При запуске программы выводится:

19.5

Обратите внимание, что мы используем 19.5F вместо 19.5. Это потому, что 19.5 является литералом Double, и поэтому вы не можете назначить значение Double типу FloatПеременная.

Чтобы компилятор рассматривал 19.5 как Float, вам нужно использовать F в конце.

Если вы не уверены,何值将被 назначен переменной в программе, вы можете определить её как тип Number. Это позволяет вам назначать как целые значения, так и значения с плавающей запятой (одновременно одному значению). Например:

fun main(args: Array<String>) {
    var test: Number = 12.2
    println("$test")
    test = 12
    // Число Number автоматически преобразуется в Int
    println("$test")
    test = 120L
    // Число Number автоматически преобразуется в Long
    println("$test")
}

При запуске программы выводится:

12.2
12
120

Тип данных Char в Kotlin

Для представления символов в Kotlin используется тип данных Char.

В отличие от Java, тип данных Char не может рассматриваться как число. Посетите эту страницу, чтобы узнать оТип данных char в JavaБолее подробная информация.

fun main(args: Array<String>) {
    val letter: Char
    letter = 'k'
    println("$letter")
}

При запуске программы выводится:

k

В Java вы можете выполнить следующее действие:

char letter = 65;

Но следующая кодировка в Kotlin приводит к ошибке.

var letter: Char = 65  // Ошибка

Тип данных Boolean в Kotlin

  •  Тип данных Boolean имеет два возможных значения: true или false.

fun main(args: Array<String>) {
    val flag = true
    println("$flag")
}

Булево значение используется для решений в предложениях (обсудится в后续 главах).

Массивы (Array) в Kotlin

Массив является контейнером, который содержит данные одного типа (значения). Например, вы можете создать массив, который может содержать 100 значений типа Int.

В Kotlin массивы представляются классом Array. Этот класс имеет функции get и set, атрибут size и другие полезные члены.

Строки (String) в Kotlin

В Kotlin строки представляются классом String. Например, такие строковые literals "this is a string" реализованы как экземпляры этого класса.