Linguagem Kotlin 🎯
Este guia é um material de apoio para quem está começando na linguagem Kotlin, especialmente para estudantes que já possuem uma base em lógica de programação.
Kotlin é uma linguagem moderna, estaticamente tipada, que roda na JVM (a mesma máquina virtual do Java) e também pode ser compilada para JavaScript ou código nativo. Desde 2019, é a linguagem oficialmente recomendada pelo Google para desenvolvimento Android — é a linguagem usada no projeto Saudações em Android deste curso, e também no Saudações em Kotlin puro (console, sem Android).
🔹 Por que Kotlin em vez de Java no Android?
Kotlin foi desenhado para ser 100% interoperável com Java (você pode chamar código Java de dentro do Kotlin e vice-versa), mas corrige vários pontos de atrito histórico do Java:
- Null safety: o sistema de tipos distingue
String(nunca nulo) deString?(pode ser nulo) — muitos erros deNullPointerExceptionviram erro de compilação em vez de crash em produção. - Sintaxe mais concisa: menos código boilerplate que Java pra fazer a mesma coisa (getters/setters automáticos, inferência de tipos, funções de extensão).
- Interoperabilidade total: bibliotecas Java existentes continuam funcionando normalmente.
🛠️ Instalação e Configuração do Ambiente
Para programar em Kotlin, você precisa do JDK (Java Development Kit) e do compilador Kotlin.
Instalação do JDK
Baixe e instale o OpenJDK (versão 17 ou mais recente). Verifique no terminal:
java -version
Instalação do Kotlin
Baixe o compilador via site oficial ou gerenciador de pacotes do seu sistema. Verifique:
kotlinc -version
IDE
IntelliJ IDEA (da JetBrains, criadora do Kotlin) e Android Studio (baseado no IntelliJ) têm suporte nativo completo a Kotlin — são as IDEs recomendadas.
🚀 Seu Primeiro Programa em Kotlin
Crie um arquivo chamado:
main.kt
Escreva:
fun main() {
println("Ola, Universo Kotlin!")
}
Compile e execute:
kotlinc main.kt -include-runtime -d main.jar
java -jar main.jar
O resultado será:
Ola, Universo Kotlin!
Análise do Código
fun main()declara a função principal — repare emfun, nãofunctionnemdef.println()exibe texto no console, com quebra de linha automática.- Não há necessidade de declarar uma classe envolvendo
main, diferente do Java.
📊 Tipos de Dados e Variáveis
Kotlin tem inferência de tipos — você raramente precisa escrever o tipo explicitamente, mas ele existe e é checado em tempo de compilação.
val nome: String = "Ana Souza"
val idade: Int = 25
val salario: Double = 6200.75
val estudante: Boolean = true
val declara uma referência imutável (não pode ser reatribuída); var declara uma mutável:
var contador = 0
contador = contador + 1
Null safety
var nome: String = "Ana"
// nome = null // ERRO de compilação: String não aceita null
var apelido: String? = null // "?" permite null explicitamente
Se apelido pode ser null, o compilador obriga você a tratar esse caso antes de usar o valor — com ?., !! ou if (apelido != null).
🔢 Operadores
Aritméticos
| Operador | Significado |
|---|---|
+ |
Adição |
- |
Subtração |
* |
Multiplicação |
/ |
Divisão |
% |
Resto da divisão |
Comparativos
| Operador | Significado |
|---|---|
== |
Igual (compara valor) |
!= |
Diferente |
>, <, >=, <= |
Comparação numérica |
Nota: diferente de Java, == em Kotlin já compara valor (não referência) por padrão — para comparar referência, usa-se ===.
Lógicos
| Operador | Significado |
|---|---|
&& |
E (AND) |
|| |
OU (OR) |
! |
NÃO (NOT) |
📤 Saída de Dados
fun main() {
val idade = 25
val salario = 6200.75
val nome = "Ana Souza"
println("IDADE = $idade") println("SALARIO =$salario")
println("NOME = $nome")
}
O $variavel dentro de uma string faz interpolação direta — não precisa de + nem .format() para casos simples. Para expressões, usa-se ${...}:
println("Ano que vem: ${idade + 1}")
📥 Entrada de Dados
fun main() {
print("Digite seu nome: ")
val nome = readLine() ?: ""
println("Ola, $nome!")
}
readLine() devolve String? (pode ser null se a entrada for fechada) — o operador ?: (“elvis operator”) fornece um valor padrão ("") caso seja null.
🔀 Estrutura Condicional
fun saudacaoPorHora(hora: Int): String {
return if (hora < 6) {
"Boa madrugada!"
} else if (hora < 12) {
"Bom dia!"
} else if (hora < 18) {
"Boa tarde!"
} else {
"Boa noite!"
}
}
Em Kotlin, if é uma expressão — pode ser usado diretamente como valor de retorno, sem precisar de uma variável intermediária.
when (o switch do Kotlin)
fun saudacaoPorHora(hora: Int): String = when {
hora < 6 -> "Boa madrugada!"
hora < 12 -> "Bom dia!"
hora < 18 -> "Boa tarde!"
else -> "Boa noite!"
}
🔁 Estruturas de Repetição
// for
for (i in 1..10) {
println(i)
}
// while
var contador = 0
while (contador < 5) {
println(contador)
contador++
}
1..10 é um range (intervalo) — sintaxe nativa de Kotlin, sem precisar de range() como em Python.
📏 Listas
val numeros = listOf(10, 20, 30, 40)
println(numeros[0])
println(numeros.size)
val dobrados = numeros.map { it * 2 }
val pares = numeros.filter { it % 2 == 0 }
listOf() cria uma lista imutável; mutableListOf() cria uma que aceita add/remove. { it * 2 } é uma função lambda — it é o nome implícito do único parâmetro.
🧩 Funções
fun somar(a: Int, b: Int): Int {
return a + b
}
// Forma curta (função de expressão única)
fun somar(a: Int, b: Int): Int = a + b
Parâmetros com valor padrão
fun saudar(nome: String, saudacao: String = "Ola") {
println("$saudacao, $nome!")
}
saudar("Ana") // Ola, Ana!
saudar("Ana", "Bom dia") // Bom dia, Ana!
🐘 Kotlin no Android (Jetpack Compose)
O projeto Saudações em Android deste curso usa Jetpack Compose, o toolkit moderno de UI declarativa do Android, escrito em Kotlin:
@Composable
fun GreetingScreen() {
var horario by remember { mutableStateOf("") }
Text(text = "Digite uma hora do dia (formato HH:MM):")
TextField(value = horario, onValueChange = { horario = it })
}
@Composable marca uma função como um componente de UI; remember { mutableStateOf(...) } guarda estado que sobrevive a recomposições da tela — o equivalente Kotlin/Android do useState do React.
🧠 Kotlin x Java
| Característica | Java | Kotlin |
|---|---|---|
| Null safety | Não (NullPointerException em runtime) | Sim (String vs String?, checado em compilação) |
| Ponto de entrada | Precisa de uma classe | fun main() direto |
| Inferência de tipos | Limitada (var desde Java 10) |
Ampla |
| Interpolação de string | + ou String.format |
"$variavel" |
if como expressão |
Não | Sim |
| Getters/setters | Manuais ou geradas pela IDE | Automáticos em val/var |
| Interoperabilidade | — | 100% compatível com bibliotecas Java |
🎓 Conclusão
Kotlin é hoje a porta de entrada padrão para desenvolvimento Android, mantendo total compatibilidade com o ecossistema Java já maduro, mas com uma sintaxe mais segura e concisa. Domine os fundamentos daqui e aplique-os em um app real com Jetpack Compose — ou compare com Swift, a linguagem que ocupa esse mesmo papel no ecossistema Apple.
🔗 Recursos Pedagógicos do Capítulo
| Recurso | Descrição | Acesso Direto |
|---|---|---|
| 📊 Slides de Aula | Apresentação visual estruturada com diagramas | Ver Slides |
| 🧠 Quiz Formativo | Teste de fixação com feedback imediato por alternativa | Fazer Quiz |
| 💻 Exemplos Práticos | Código executável completo e saída no console | Ver Exemplos |
| 🧩 Exercícios Progressivos | Lista de atividades práticas em 4 níveis | Resolver Exercícios |
🧭 Navegação do Capítulo: ⬅️ Capítulo Anterior · 📚 Sumário do Módulo · ➡️ Próximo Capítulo