JavaRush /Java Blog /Random-ID /Apakah ada perbedaan antara Kotlin dan Java?
Paul Soia
Level 26
Kiyv

Apakah ada perbedaan antara Kotlin dan Java?

Dipublikasikan di grup Random-ID
Halo semua. Saya ingin memberi tahu Anda beberapa hal dasar tentang bahasa Kotlin, yang akan berguna bagi pemula. Kebetulan sekarang akan sulit untuk masuk ke pengembangan Android hanya dengan satu bahasa - sebagian besar proyek baru mulai ditulis di Kotlin, sebagian besar proyek siap pakai ditulis di Java. Apakah ada perbedaan antara Kotlin dan Java?  - 1Saat ini saya memiliki 4 proyek yang sedang berjalan: dua di Kotlin dan dua di Java (satu proyek utama besar dan tiga proyek kecil untuk penggunaan internal). Ketika perusahaan memutuskan untuk menulis proyek baru di Kotlin, keputusan ini terasa aneh bagi saya. Mengapa mencampur bahasa yang berbeda? Biarkan orang lain menulis di Kotlin, mengapa kita membutuhkannya? Namun tidak ada jalan keluar, jadi saya memutuskan untuk mencoba bahasa baru dan mulai mempelajarinya. Kode pertama, tentu saja, seluruhnya ditulis dalam gaya Java, yang semakin menambah kesalahpahaman: mengapa saya memerlukan bahasa baru? Namun seiring saya menggunakannya, saya menemukan lebih banyak keuntungan dan sekarang (saya telah menulis di Kotlin selama hampir 2 tahun) saya dapat mengatakan bahwa Kotlin lebih nyaman dalam pengembangan Android. Saya ingin menunjukkan beberapa nuansa yang tidak akan terlihat jelas bagi seseorang yang memutuskan untuk mulai mempelajari Kotlin setelah Java. Izinkan saya juga mengingatkan Anda bahwa Android menggunakan Java 8, dengan versi saat ini adalah 14. Jadi, pertama - Variabel : Java:
Int a = 1;
String s = "test";
Kotlin:
val a = 1
var b = 2
val c: Int
val d = "test"
Ada dua jenis variabel di Kotlin: val (baca-saja) dan var (baca-tulis). Disarankan untuk menggunakan val bila memungkinkan. Tipe variabel tidak perlu dideklarasikan jika variabel sudah diinisialisasi. Kedua - if/else, switch pernyataan : Seberapa sering Anda menggunakan rangkaian pernyataan ini di Java:
if (вариант 1)
{...}
else if (вариант 2)
{...}
...
else
{...}
Atau seperti ini:
switch(выражениеДляВыбора) {
        case (meaning 1):
                Код1;
                break;
        case (meaning 2):
                Код2;
                break;
...
        case (meaning N):
                КодN;
                break;
        default:
                КодВыбораПоУмолчанию;
                break;
        }
Di Kotlin, operator kapan digunakan untuk ekspresi seperti itu (walaupun if/else juga bisa digunakan):
val x = 5
val result = when(x) {
        0, 1 -> "cool"
        2 -> "bad"
        5 -> "normal"
        else -> "error"
}
System.out.println(result)
Di sini kita tidak hanya menelusuri rangkaian kondisi, tetapi juga segera menetapkan seluruh ekspresi ke variabel hasil, sehingga menghemat beberapa baris kode. Namun tetap saja, jika Anda hanya memiliki dua opsi di satu cabang, saya sarankan menggunakan if..else yang biasa. Waktu pembangunannya akan lebih singkat hanya dari tiga pilihan. Mari kita lanjutkan - Konstruktor . Ini adalah dongeng di sini. Bandingkan saja kode di Java dan Kotlin. Jawa:
public class Person {

    private String firstName;
    private String lastName;
    private int age;

    public Person(String firstName, String lastName, int age) {
        this.firstName = firstName;
        this.lastName = lastName;
        this.age = age;
    }

    public String getFirstName() {
        return firstName;
    }

    public String getLastName() {
        return lastName;
    }

    public int getAge() {
        return age;
    }

    public void setAge(int age) {
        this.age = age;
    }
}
Kotlin:
class Person(private val firstName: String,
             private val lastName: String,
             private var age: Int) {
}
Tampaknya ada sesuatu yang belum selesai dalam kode Kotlin. Tapi tidak, ini adalah dua kode identik dalam bahasa berbeda. Mari kita cari tahu sedikit. Di Kotlin, konstruktor dapat ditulis langsung di badan nama kelas (tetapi jika mau, Anda dapat melakukannya dengan cara lama, seperti di Java). Jadi, kami telah menulis tiga variabel, di Java kami telah membuat konstruktor, pengambil, dan satu penyetel untuk variabel usia. Di Kotlin, seperti yang kita ingat, variabel val bersifat read-only, dan oleh karena itu penyetel untuk variabel-variabel ini tidak tersedia (Kotlin mengimplementasikan getter-setter di balik terpalnya). Variabel var memungkinkan Anda menggunakan penyetel. Hasilnya, kami menulis hal yang hampir sama dalam satu baris, yang memakan lebih dari selusin baris di Java. Di sini saya merekomendasikan untuk membaca lebih lanjut tentang kelas data di Kotlin. Namun bukan hanya itu saja keahlian konstruktor Kotlin. Namun bagaimana jika Anda memerlukan dua konstruktor? Bagaimana jika ada tiga? Di Jawa akan terlihat seperti ini:
public Person(String firstName, String lastName, int age) {
        this.firstName = firstName;
        this.lastName = lastName;
        this.age = age;
    }

public Person(String firstName, String lastName) {
        this.firstName = firstName;
        this.lastName = lastName;
    }

public Person(String firstName) {
        this.firstName = firstName;
    }
Tidak ada yang rumit, desainer sebanyak yang dibutuhkan, itulah yang mereka lakukan. Di Kotlin Anda dapat melakukannya hanya dengan satu konstruktor. Bagaimana? Sederhana saja - nilai default.
class Person(private val firstName: String,
             private val lastName: String? = null,
             private var age: Int = 5) {
}
Kami menetapkan nilai default di konstruktor dan sekarang memanggilnya akan terlihat seperti ini:
Person(firstName = "Elon", lastName = "Mask", age = 45)
Person(firstName = "Elon", age = 45)
Person(firstName = "Elon", lastName = "Mask")
Mungkin timbul pertanyaan: apa ini:
private val lastName: String? = null
Apa saja tanda tanya lainnya? Ya, jika nilainya bisa null, maka sudah disetel ?. Ada juga opsi seperti ini - !!(jika variabel tidak dapat menerima null). Baca sendiri, semuanya sederhana. Dan kita beralih ke poin berikutnya. Ekstensi . Ini adalah alat yang sangat keren di Kotlin yang tidak tersedia di Java. Terkadang dalam sebuah proyek kami menggunakan metode templat yang diulangi di banyak kelas. Misalnya seperti ini:
Toast.makeText(this, "hello world :)", Toast.LENGTH_SHORT).show();
Di Kotlin kita dapat memperluas kelas:
fun Context.toast(message: CharSequence) = Toast.makeText(this, message, Toast.LENGTH_SHORT).show()
Dan kemudian gunakan seperti ini di seluruh proyek:
context?.toast("hello world")
Kami membuat ekstensi untuk kelas Konteks. Dan kini, di mana pun konteksnya tersedia, metode toast barunya akan tersedia. Ini dapat dilakukan untuk kelas apa pun: String, Fragmen, kelas khusus Anda, tidak ada batasan. Dan poin terakhir yang akan kita bahas adalah Bekerja dengan Strings . Semuanya sederhana di sini. Di Jawa ditulis seperti ini:
String s = "friends";
int a = 5;
System.out.println("I have" + a + s + "!");
Lebih mudah di Kotlin:
val s = "friends"
val a = 5
println("I have $a $s!")
Ini adalah nuansa yang saya temukan di awal mempelajari Kotlin, saya harap ini dapat membantu Anda.
Komentar
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION