Pustaka standar Kotlin adalah kumpulan fungsi dan tipe bawaan yang disertakan bersama compiler, sehingga tersedia pada setiap proyek tanpa dependensi tambahan. Isinya tersusun atas paket-paket kecil yang masing-masing melayani satu kebutuhan, misalnya masukan dan keluaran, pengolahan string, range, dan pengukuran waktu. Topik ini menelusuri empat paket yang paling sering dipakai, yaitu kotlin.io, kotlin.text, kotlin.ranges, dan kotlin.system, dengan program kecil yang dijalankan dari terminal.
kotlin.io#
Paket kotlin.io memuat fungsi masukan dan keluaran tingkat atas. Fungsi println dan readln yang telah digunakan pada modul dasar bahasa sebenarnya berasal dari paket ini, dan keduanya memiliki pasangan yang sering terlupakan, yaitu print yang tidak menambahkan baris baru serta readln yang mengembalikan satu baris masukan tanpa karakter baris barunya.
// Fungsi keluaran dan masukan dari paket kotlin.io
import kotlin.io.println
import kotlin.io.print
import kotlin.io.readln
fun main() {
val nama = readln()
val nilai = readln().toInt()
print("Status: ")
println("$nama, nilai $nilai, lulus = ${nilai >= 75}")
}Perintah berikut memberikan dua baris masukan melalui pipe agar eksekusinya dapat diulang dengan hasil yang sama.
export JAVA_HOME=/home/kal/my-project/tools/jdk-merged
export PATH=$JAVA_HOME/bin:/home/kal/my-project/tools/kotlinc/bin:$PATH
export STDLIB=/home/kal/my-project/tools/kotlinc/lib/kotlin-stdlib.jar
kotlinc io.kt -d io.jar
# dua baris masukan diberikan melalui pipe agar eksekusi dapat diulang
printf "Ali\n85\n" | java -cp "io.jar:$STDLIB" IoKtStatus: Ali, nilai 85, lulus = trueKeluaran terdiri atas satu baris karena print menulis tanpa baris baru, kemudian println melanjutkan pada baris yang sama. Pemanggilan readln mengembalikan String, sehingga toInt() diperlukan untuk mendapat nilai numerik, dan hasil perbandingannya dicetak sebagai true karena 85 melewati ambang 75.
kotlin.text#
Paket kotlin.text memuat fungsi perluasan pada String yang meliputi pengisian, pemotongan, dan pemecahan. Tiga fungsi berikut mewakili pola yang paling sering muncul, yaitu padEnd untuk melapis teks sampai lebar tertentu, takeLast untuk mengambil sejumlah karakter terakhir, dan split untuk memecah teks pada pemisah tertentu.
// Tiga fungsi dari paket kotlin.text
import kotlin.text.padEnd
import kotlin.text.split
import kotlin.text.takeLast
fun main() {
val kode = "ARS-2024-11"
println(kode.takeLast(2))
println("Laporan".padEnd(10, '.'))
println("arsip,cadangan,bulanan".split(','))
}export JAVA_HOME=/home/kal/my-project/tools/jdk-merged
export PATH=$JAVA_HOME/bin:/home/kal/my-project/tools/kotlinc/bin:$PATH
export STDLIB=/home/kal/my-project/tools/kotlinc/lib/kotlin-stdlib.jar
kotlinc teks.kt -d teks.jar
java -cp "teks.jar:$STDLIB" TeksKt11
Laporan...
[arsip, cadangan, bulanan]Baris pertama mengambil dua karakter terakhir dari kode arsip, yaitu nomor bulan. Baris kedua melapis kata Laporan dengan tanda titik sampai panjangnya sepuluh karakter, kebiasaan yang berguna untuk menyusun kolom teks berlebar tetap. Baris ketiga memecah teks pada koma dan mencetak List hasilnya, sehingga format koma terlihat langsung sebagai elemen yang terpisah.
kotlin.ranges#
Paket kotlin.ranges memuat tipe range beserta fungsi pembentuknya. Notasi .. membentuk rentang naik, downTo membentuk rentang turun, step mengatur lompatan, dan until menyingkirkan batas atasnya. Operator in memeriksa keanggotaan, sehingga range dipakai baik untuk perulangan maupun untuk pernyataan bersyarat.
// Range dari paket kotlin.ranges
import kotlin.ranges.downTo
import kotlin.ranges.step
import kotlin.ranges.until
fun main() {
println((1..5).joinToString(" "))
println((10 downTo 6 step 2).joinToString(" "))
println((0 until 3).joinToString(" "))
println('c' in 'a'..'f')
println(17 in 12..17)
}export JAVA_HOME=/home/kal/my-project/tools/jdk-merged
export PATH=$JAVA_HOME/bin:/home/kal/my-project/tools/kotlinc/bin:$PATH
export STDLIB=/home/kal/my-project/tools/kotlinc/lib/kotlin-stdlib.jar
kotlinc rentang.kt -d rentang.jar
java -cp "rentang.jar:$STDLIB" RentangKt1 2 3 4 5
10 8 6
0 1 2
true
trueRentang pertama berjalan dari 1 sampai 5 dengan batas atas tercakup, sedangkan until pada rentang ketiga mencetak 0 sampai 2 tanpa menyertakan batas atasnya. Rentang kedua menunjukkan kombinasi downTo dengan step 2 yang menghasilkan 10, 8, lalu 6. Dua baris terakhir memeriksa keanggotaan pada rentang karakter dan rentang angka, bentuk pemeriksaan yang lebih ringkas daripada membandingkan dua ujungnya secara manual.
kotlin.system#
Paket kotlin.system menyediakan fungsi utilitas di sekitar proses dan waktu, dan yang paling sering dipakai adalah measureTimeMillis. Fungsi tersebut menjalankan blok yang diberikan, mengukur lamanya dalam milidetik, lalu mengembalikan hasilnya sebagai Long. Nilainya berubah-ubah antar eksekusi karena bergantung pada keadaan mesin, sehingga program berikut hanya menampilkan hasil perhitungan di dalam blok dan validitas nilai waktunya.
// Mengukur waktu eksekusi dengan measureTimeMillis
import kotlin.system.measureTimeMillis
fun main() {
var hitungan = 0
val waktu = measureTimeMillis {
repeat(1_000_000) { hitungan += 1 }
}
println("hitungan: $hitungan")
println("waktu >= 0: ${waktu >= 0}")
}export JAVA_HOME=/home/kal/my-project/tools/jdk-merged
export PATH=$JAVA_HOME/bin:/home/kal/my-project/tools/kotlinc/bin:$PATH
export STDLIB=/home/kal/my-project/tools/kotlinc/lib/kotlin-stdlib.jar
kotlinc waktu.kt -d waktu.jar
java -cp "waktu.jar:$STDLIB" WaktuKthitungan: 1000000
waktu >= 0: trueBaris pertama menegaskan bahwa blok di dalam measureTimeMillis benar-benar dijalankan sampai selesai, yaitu satu juta kali penambahan. Baris kedua menunjukkan tipe kembaliannya adalah bilangan bulat milidetik yang dapat dibandingkan seperti Long biasa. Bila angka sesungguhnya diperlukan, mencetak nilai waktu secara langsung tetap sah pada sesi kerja sendiri, dengan pengertian bahwa angkanya berbeda pada setiap eksekusi.
Ringkasan#
- Pustaka standar disertakan bersama compiler dan tersusun atas paket seperti
kotlin.io,kotlin.text,kotlin.ranges, dankotlin.system. printmenulis tanpa baris baru danreadlnmengembalikan satu baris masukan sebagaiString, dengan pasangan null-safereadlnOrNulldantoIntOrNull.padEnd,takeLast, dansplitmenutup kebutuhan pemformatan serta pemecahan string yang paling umum.- Range dibentuk dengan
..,downTo,step, danuntil, sedangkaninmemeriksa keanggotaannya, danmeasureTimeMillismengukur lama eksekusi blok dalam milidetik.
Referensi#
- kotlin-stdlib API reference — JetBrains — Rujukan API lengkap pustaka standar Kotlin untuk semua paket yang ditelusuri topik ini.
- Ranges — JetBrains
— Dokumentasi range, progressions, dan operator keanggotaan
in.