Skip to main content

Kotlin | kotlin.String steroid untuk java.lang.String

Sama seperti String di Java, Kotlin String adalah obyek immutable yang berarti sekali diinisialisasi, valuenya tidak akan bisa diubah. Jika dilakukan assignment value baru, yang sebenarnya terjadi adalah JVM akan membuat obyek String baru dengan value yang diassign.

String kode = "Sebenarnya hubungan kita ini apa sih?";
// misalkan object di memory adalah ABC
kode = "Oke, besok aku datang ke Ayah kamu";
// object yang ada di memory saat ini adalah XYZ

Seperti halnya dengan Java, String literal di Kotlin juga dimulai dengan tanda petik ganda (").
Hanya saja class String di Kotlin memeliki beberapa kelebihan dibanding String di Java.
Diantaranya:
  1. Setiap element character dari string bisa diakses dengan array syntax
    eg: kode[index], sedangkan di Java kode.charAt(index)

    Untuk iterasi tiap element

    Java
    for (char c : kode.toCharArray()) {
        System.out.println(c);
    }

    Kotlin
    for (c in kode) {
        println(c)
    }
    
    
  2. String template, yakni dalam string literal bisa disisipkan kode untuk dievaluasi nilainya.
    Di Scala ada fitur yang serupa bernama String interpolation.

    Jika di Java kita biasa menulis seperti ini
    System.out.println(
            String.format("Panjang karakter dari (%s) adalah %d",
                    kode, kode.length()));


    Di Kotlin kita bisa menulis seperti ini
    println("Panjang karakter dari ($kode) adalah ${kode.length}")
    
    
  3. Multiline String literal,
    Bagi kita yang biasa menulis string panjang seperti query mungkin agak kurang nyaman
    dengan tidak adanya fitur multiline string di Java, padahal sudah banyak request masuk untuk menyediakan fitur ini.

    Java
    System.out.println("SELECT '" + kode + "', '" + kode.length() + "'" +
            " FROM tablename" +
            " WHERE blabla");

    Kotlin
    println("""SELECT '$kode', '${kode.length}' 
    FROM tablename 
    WHERE blabla""")

Comments