logo

Эквивалент массива строк String[] на Kotlin: руководство

Быстрый ответ

В Kotlin String[] из Java заменяется на Array<String>. Его можно создать так:

kotlin
Скопировать код
val words = arrayOf("alpha", "beta", "gamma")

Для инициализации массива определенной длины с индексами используйте:

kotlin
Скопировать код
val indexedWords = Array(3) { i -> "Word$i" } // Важно знать номера: 0, 1, 2!

Функция arrayOf создает массив с уже заданными элементами, в то время как Array(size) { } позволяет генерировать элементы на основе их индекса.

Обработка nullable и non-nullable строк в Kotlin

Kotlin улучшает функциональность и безопасность, предлагая различные инструменты для работы с массивами строк, включая те, которые могут содержать значения null, и специализированные массивы для примитивных типов.

Работа с nullable данными

Чтобы создать массив, способный содержать null значения, используйте:

kotlin
Скопировать код
val maybeWords = arrayOfNulls<String>(3)

Или вот так, для инициализации значением null:

kotlin
Скопировать код
val maybeWords = Array<String?>(3) { null } // Все в порядке, места могут быть пустыми!

Специализированные массивы для примитивов

Kotlin предлагает специализированные массивы, похожие на int[], byte[] в Java, например IntArray, ByteArray.

kotlin
Скопировать код
val numbers = intArrayOf(42, 7, 100) // Любим случайные числа!

Создание пустых массивов

Для создания пустых массивов работайте с функцией emptyArray<T>() или определите массив с размером 0:

kotlin
Скопировать код
val emptyWords: Array<String> = emptyArray() 
val emptyMaybeWords: Array<String?> = arrayOfNulls(0) // Без лишних проблем!

Завершающий шаг: усложненная инициализация

Вы можете динамически генерировать содержимое массива во время инициализации, используя индексные выражения:

kotlin
Скопировать код
val prefixedWords = Array(3) { i -> "Word number ${i+1}" } // Уже отсортированы для вашего удобства!

Все аспекты работы с массивами в Kotlin

Kotlin расширяет способности работы с массивами, представляя разнообразные функции от гибкой инициализации до массивов символов и преобразования типов.

Инициализация массива с применением логики

В Kotlin инициализация массива может включать логику благодаря мощным лямбда-функциям:

kotlin
Скопировать код
val greetings = Array(3) { index -> when(index) {
    0 -> "Привет"
    1 -> "Bonjour"
    2 -> "Hola"
    else -> "Приветик"
}}

Работа с массивами символов

Kotlin предлагает использовать charArrayOf() для создания массивов символов, а не Array<Char>:

kotlin
Скопировать код
val abc = charArrayOf('a', 'b', 'c') // Изучаем алфавит по-котлиновски!

Преобразование типов массивов

Kotlin облегчает преобразование типов массивов, делая ваш код максимально гибким:

kotlin
Скопировать код
val wrappedInts: Array<Int> = arrayOf(1, 2, 3)
val primitiveInts: IntArray = wrappedInts.toIntArray() // Распаковываем подарки!

Часто задаваемые вопросы по работе с массивами в Kotlin

Можно ли создать непустой массив с NULL-значениями?

Да, это возможно:

kotlin
Скопировать код
val arrayOfNulls: Array<String?> = Array(5) { null } // Готовы к встрече, даже без приглашения!

Как это отражается на производительности?

Специализированные массивы, типа IntArray, предпочтительнее использовать вместо Array<Int>, чтобы экономить время и память и избегать затрат на упаковку.

Как обеспечивается типобезопасность?

Типизированные массивы в Kotlin помогают избежать ClassCastException, обнаруживая ошибки типов на этапе компиляции, таким образом, уменьшая количество исключений во время выполнения.

Визуализация

Переход от String[] в Java к Array<String> в Kotlin можно представить как переупорядочивание книжного шкафа:

Markdown
Скопировать код
Библиотека на Java (📚): Ящики с Метками [🏷️String[]]

В Java String[] заменяет полку с ящиками, помеченными метками, предназначенными исключительно для строк.

Markdown
Скопировать код
Библиотека на Kotlin (📘): Полка с Ячейками [🔲Array<String>]

А в Kotlin Array<String> — это полка с ячейками для строк, никаких специальных меток не нужно!

Markdown
Скопировать код
Java 📚       Kotlin 📘
🏷️String[] → 🔲Array<String>

Nullable массив можно сравнить с полкой, где некоторые места в сознательном порядке оставлены пустыми. Ведь даже null имеет право на свое пространство!

Полезные материалы

  1. Основные типы | Документация Kotlin — Подробное руководство по основным типам в Kotlin.
  2. Константы в Kotlin – Stack Overflow — Полезный раздел вопросов и ответов на Stack Overflow о том, как создавать константы в Kotlin.
  3. Учебник по Kotlin – YouTube — Пошаговый видеокурс на YouTube для разработчиков Java, переходящих на Kotlin.
  4. Array – документация языка Kotlin — Официальная документация о типе Array в Kotlin.
  5. Сравнение массивов Kotlin с java.lang.ArrayStoreException | ProAndroidDev — Детальный анализ и сравнение безопасности типов в массивах Kotlin и Java.