JavaRush /Java Blog /Random-TK /Kotlin bilen Java-yň arasynda tapawut barmy?
Paul Soia
Dereje
Kiyv

Kotlin bilen Java-yň arasynda tapawut barmy?

Toparda çap edildi
Hemmäňize salam! Kotlin dili barada täze öwrenýänler üçin peýdaly boljak birnäçe esasy zady aýdasym gelýär. Edil şeýle boldy, indi diňe bir dil bilen Android ösüşine girmek kyn bolar - täze taslamalaryň köpüsi Kotlinde ýazylyp başlaýar, taýýar taslamalaryň köpüsi Java-da ýazylýar. Kotlin bilen Java-yň arasynda tapawut barmy?  - 1Häzirki wagtda işimde 4 taslamam bar: ikisi Kotlinde we ikisi Java-da (biri uly esasy we üç sany içerki ulanmak üçin kiçi). Kompaniýa Kotlinde täze taslamalar ýazmak kararyna gelende, bu karar maňa geň göründi. Näme üçin dürli dilleri garyşdyrmaly? Kotlinde başga biri ýazsyn, bize näme gerek? Outöne çykalga ýokdy, şonuň üçin täze dili synap görmek kararyna geldim we öwrenip başladym. Elbetde, birinji kod tutuşlygyna Java stilinde ýazylypdy, bu düşünişmezlige hasam goşant goşdy: näme üçin maňa täze dil gerek? Itöne ulananym bilen has köp artykmaçlyk tapdym we indi (2 ýyl töweregi wagt bäri Kotlinde ýazýaryn) Kotliniň Android ösüşinde has amatlydygyny aýdyp bilerin. Kotlini Java-dan soň öwrenip başlamagy ýüregine düwen käbir nuanslary görkezmek isleýärin. Şeýle hem, Android-iň häzirki wersiýasy 14 bolan Java 8 ulanýandygyny ýatladýaryn. Şeýlelik bilen, ilki - Üýtgeýjiler : Java:
Int a = 1;
String s = "test";
Kotlin:
val a = 1
var b = 2
val c: Int
val d = "test"
Kotlinde üýtgeýänleriň iki görnüşi bar: val (diňe okalýar) we var (okamak-ýazmak). Mümkin boldugyça val ulanmak maslahat berilýär. Üýtgeýjiniň eýýäm başlanan bolsa üýtgeýjiniň görnüşini yglan etmek hökman däl. Ikinjisi - eger / başga bolsa, jümleleri üýtgediň : Java-da bu sözlemler zynjyryny näçe gezek ulanýarsyňyz:
if (вариант 1)
{...}
else if (вариант 2)
{...}
...
else
{...}
Ora-da şuňa meňzeş:
switch(выражениеДляВыбора) {
        case (meaning 1):
                Код1;
                break;
        case (meaning 2):
                Код2;
                break;
...
        case (meaning N):
                КодN;
                break;
        default:
                КодВыбораПоУмолчанию;
                break;
        }
Kotlinde operator şeýle aňlatmalar üçin ulanylanda (eger / başga hem ulanyp bolýan bolsa):
val x = 5
val result = when(x) {
        0, 1 -> "cool"
        2 -> "bad"
        5 -> "normal"
        else -> "error"
}
System.out.println(result)
Bu ýerde diňe bir şertler zynjyryndan geçmän, eýsem, birnäçe setir koduny tygşytlaýan netijäniň üýtgeýjisine derrew ähli aňlatmany belledik. Stillöne şonda-da, bir şahada diňe iki wariant bar bolsa, adaty if..else ulanmagy maslahat berýärin. Gurluşyk diňe üç wariantdan gysga bolar. Geliň - Gurluşykçylar . Bu ýerde erteki. Diňe Java we Kotlindäki kodlary deňeşdiriň. Java:
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) {
}
Kotlin kodunda bir zat gutarmadyk ýaly bolup görünýär. Nook, bular dürli dillerde iki meňzeş kod. Geliň, azajyk düşüneliň. Kotlinde konstruktor gönüden-göni synpyň adyna ýazylyp bilner (ýöne isleseňiz, Java-daky ýaly köne usul bilen edip bilersiňiz). Şeýlelik bilen, üç üýtgeýji ýazdyk, Java-da ýaş üýtgeýjisi üçin konstruktor, getters we bir sazlaýjy döretdik. Kotlinde ýadymyzda bolsa, val üýtgeýjisi diňe okalýar, şonuň üçin bu üýtgeýjiler üçin sazlaýjy elýeterli däl (Kotlin kapotyň aşagynda getter sazlaýjylary amala aşyrýar). Var üýtgeýjisi sazlaýjy ulanmaga mümkinçilik berýär. Netijede, Java-da ondan gowrak setir alýan bir setirde diýen ýaly ýazdyk. Bu ýerde Kotlinde maglumat sapaklary hakda has köp okamagy maslahat berýärin. Emma “Kotlin” konstruktorlarynyň başarnykly zady däl. Twoöne iki konstruktor gerek bolsa näme etmeli? Üçüsi bar bolsa näme etmeli? Java-da şeýle bolardy:
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;
    }
Çylşyrymly zat ýok, zerur bolşy ýaly köp dizaýner, olaryň eden zady. Kotlinde diňe bir konstruktor bilen baryp bilersiňiz. Nädip? Bu ýönekeý - başlangyç bahalar.
class Person(private val firstName: String,
             private val lastName: String? = null,
             private var age: Int = 5) {
}
Konstruktorda deslapky bahalary belledik, indi olara jaň etmek şeýle bolar:
Person(firstName = "Elon", lastName = "Mask", age = 45)
Person(firstName = "Elon", age = 45)
Person(firstName = "Elon", lastName = "Mask")
Sorag ýüze çykyp biler: bu näme:
private val lastName: String? = null
Bu beýleki sorag belgileri näme? Hawa, bahasy null bolup bilýän bolsa, onda düzüldi ?. Şeýle bir opsiýa hem bar - !!(üýtgeýji null kabul edip bilmeýän bolsa). Bu hakda özüňiz okaň, hemmesi ýönekeý. Indiki nokada geçýäris. Giňeldişler . Kotlinde Java-da ýok gaty gowy gural. Käwagt taslamada köp synplarda gaýtalanýan şablon usullaryny ulanýarys. Mysal üçin, şuňa meňzeş:
Toast.makeText(this, "hello world :)", Toast.LENGTH_SHORT).show();
Kotlinde synpy uzaldyp bileris:
fun Context.toast(message: CharSequence) = Toast.makeText(this, message, Toast.LENGTH_SHORT).show()
Soňra bolsa taslama boýunça şular ýaly ulanyň:
context?.toast("hello world")
Kontekst synpy üçin giňeltme etdik. Indi kontekst nirede bolsa, täze tost usuly elýeterli bolar. Bu islendik synp üçin edilip bilner: Setir, bölek, adaty synplaryňyz, çäklendirmeler ýok. Iň soňky seredjek nokadymyz bolsa setirler bilen işlemek . Bu ýerde hemme zat ýönekeý. Java-da şeýle ýazylýar:
String s = "friends";
int a = 5;
System.out.println("I have" + a + s + "!");
Kotlinde has aňsat:
val s = "friends"
val a = 5
println("I have $a $s!")
Kotlini öwrenip başlanymda büdredim, bu size kömek eder diýip umyt edýärin.
Teswirler
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION