De Java String[] para Kotlin: guia completo para iniciantes

Treinador Online de Python para Iniciantes

Aprenda Python facilmente sem sobrecarga teórica. Resolva tarefas práticas com verificação automática e escreva código diretamente no navegador.

Start Course

Introdução: Por que essa pergunta atormenta todos que migram de Java para Kotlin



Você acabou de começar a estudar Kotlin depois de Java e já se deparou com a primeira surpresa? Você tenta declarar um array de strings como estava acostumado em Java — String[] names = {"Alice", "Bob"} — e o compilador Kotlin dá erro? Parabéns, você não está sozinho. A pergunta "What's the Kotlin equivalent of Java's String[]?" acumulou milhares de visualizações no Stack Overflow, e não é por acaso.



Kotlin não é apenas "Java com açúcar". O Google o posiciona como uma linguagem mais moderna, segura e concisa. Mas essa concisão às vezes confunde iniciantes. Em Java, um array é uma construção nativa da linguagem. Em Kotlin, os arrays fazem parte da biblioteca padrão e têm suas próprias peculiaridades.



Neste artigo, vamos abordar tudo o que você precisa saber sobre arrays de strings em Kotlin. Você aprenderá não apenas o análogo direto de String[], mas também alternativas mais flexíveis que tornarão seu código mais limpo e seguro. Vamos lá!



1. Análogo direto: Array<String>



A maneira mais simples e óbvia de substituir String[] em Kotlin é usar Array<String>. Em Kotlin, todos os arrays são objetos da classe Array<T>, onde T é o tipo dos elementos.



Como declarar e inicializar?



Em Java, você escreve:

String[] names = new String[3];names[0] = "Alice";names[1] = "Bob";names[2] = "Charlie";


Em Kotlin, fica assim:

val names: Array<String> = arrayOfNulls(3)names[0] = "Alice"names[1] = "Bob"names[2] = "Charlie"


Mas existe uma maneira muito mais curta — usar a função arrayOf():

val names = arrayOf("Alice", "Bob", "Charlie")


O compilador Kotlin infere automaticamente o tipo Array<String>. Observe: ao contrário de Java, em Kotlin não há operador new para criar arrays. Em vez disso, são usadas funções factory.



Diferença importante: tamanho fixo



Assim como em Java, o tamanho de Array<String> é fixo. Você não pode adicionar um novo elemento após a criação. Se tentar acessar um índice fora do limite, receberá ArrayIndexOutOfBoundsException.



val fruits = arrayOf("Apple", "Banana")// fruits[2] = "Cherry" // Erro! Índice fora dos limites


2. Arrays especializados: nem sempre Array<String>



Para tipos primitivos (Int, Double, Boolean), Kotlin oferece classes otimizadas: IntArray, DoubleArray, BooleanArray, etc. Elas não usam autoboxing/unboxing, economizando memória e acelerando a execução.



Mas para strings não há essa otimização, porque String é um tipo de referência, não um primitivo. Portanto, Array<String> é a única opção se você precisar exatamente de um array.



3. Alternativa nº1: List<String> (lista imutável)



Na maioria dos casos, você não precisa de um array. Em Kotlin, é fortemente recomendado usar listas em vez de arrays, a menos que você esteja trabalhando com código de baixo nível (por exemplo, JNI ou otimização de desempenho em nível de nanossegundos).



A lista List<String> é uma coleção imutável. Você não pode alterar seu tamanho ou elementos após a criação. Isso torna o código mais seguro em ambientes multithread.



val namesList: List<String> = listOf("Alice", "Bob", "Charlie")// namesList[0] = "Eve" // Erro! listOf retorna uma lista imutável


Na prática, listOf é o equivalente Kotlin de Java String[] com proteção adicional. Em Java, um array pode ser acidentalmente modificado ao ser passado para outro método. Em Kotlin, List não permite isso.



4. Alt

Blogs

Book Recommendations