[JAVA] Über Kotlin

SLP KBIT Adventskalender 2017 12/17 (So) Artikel.

Einführung

Hallo, ich bin Nya-chan (itakumi), ein Student im dritten Jahr an der SLP-Fakultät für Studentenprogrammierung der Kagawa-Universität. Da der Kotlin-Boom vor kurzem zu mir gekommen ist, möchte ich darüber schreiben, wie Kotlin im Vergleich zu Java schmeckt, mit dem jeder vertraut sein wird, so dass auch Erst- und Zweitklässler interessiert sind. Dies ist der einzige Kotlin in diesem Kalender. Gelegentlich können Sie geheilt werden, indem Sie nur einen Artikel zur Spracheinführung lesen, der überhaupt nicht auf hohem Niveau ist.

Zunächst zu Kotlin

Zunächst denke ich, dass es einige Leute gibt, die Kotlin sagen, bevor sie über die konkrete Syntax sprechen. Kotlin ist eine statisch typisierte objektorientierte Sprache, die von Andrey Breslav und Dmitry Gemerov von Jet Brains entwickelt wurde. Das Logo ist das unten stehende

image.png

Jet Brains ist bekannt für die Entwicklung von Entwicklungsumgebungen für Programmiersprachen wie IntelliJ IDEA und RubyMine. Kotlin ist eine verbesserte Version der Java-Sprache, die auf der Erfahrung von Jet Brains basiert und sie noch einfacher und sicherer macht. Kotlin ist also eine sogenannte JVM-Sprache, die auf Java Virtual Machines (JVM) ausgeführt wird. Die gestern von Mr. Gray Kuma geschriebene Scala ist ebenfalls eine JVM-Sprache. Nun, das ist alles für die erste Erklärung, und ich möchte von nun an die spezifische Syntax betrachten.

Über die Syntax

Hello World Was ist das erste Programm, das Sie erstellen, wenn Sie die Programmiersprache zum ersten Mal berühren? ?? ?? ?? damit! !! ** HelloWorld ** Das stimmt. Das obere ist Javas Hello World-Programm und das untere ist Kotlin.

HelloWorld.java


public class Hello {
  public static void main(String[] args) {
    System.out.println("Hello, world!");
  }
}

HelloWorld.kt


fun main(args: Array<String>) {
    println("Hello, world!")
}

Was? Sehr kurze !!! Ja, Kotlin ist sehr kurz. Teka Java ist lang. Kotlin ist viel sauberer zu schreiben als Java. Sie brauchen kein Semikolon am Ende des Satzes. Haben die Leute bei Jet Brains oft das Semikolon vergessen? ?? Sie können auch definieren, wie eine Klasse geschrieben werden soll, indem Sie den Spaßfunktionsnamen (Variablenname: Typname) verwenden. System.out.println ist auch OK mit nur println !!

Umgang mit Variablen

Als nächstes folgen Variablen. Grundsätzlich ist dies die Syntax.

val num = 10    //Kann nicht mit val geändert werden
var i = 10      //Kann mit var geändert werden
i = 20

Wenn Sie den Typ explizit angeben möchten,

val str: String = "Begeisterung"    // 失礼しましたBegeisterungと出てしまいました

Machen. Zuerst mögen val und var verwechselt sein, aber sobald Sie sich daran gewöhnt haben, gibt es kein Problem mehr.

Nun, Sie können die grundlegende Syntax auf einfache Weise schreiben, aber sie wird lange dauern. Wenn Sie also an anderen Dingen interessiert sind, lesen Sie sie bitte durch.

Nullable Dann ist die Syntax einfacher und verständlicher als Java, aber das war's? Also werde ich die in Kotlin vorstellen, obwohl es kein Java gibt. Es gibt eine NullPointerException, auf die Leute, die etwas in Java entwickeln, mit Sicherheit stoßen werden. Es ist ein Typ, der oft als Nurponurupo bezeichnet wird. Kotlin hat eine Bewegung namens Bewegung zur Beseitigung der NullPointerException (eine Lüge). Kotlin kann nur mit einem speziellen Typ namens Nullable null zuweisen. Dadurch wird die NullPointerException verhindert. Die spezifische Schreibmethode ist wie folgt.

//Der normale Zeichenfolgentyp kann nicht null zugewiesen werden
var str1: String = "Banane"
str1 = null    //Kompilierungsfehler
val len1 = str1.length    //Das ist in Ordnung. str1 kann nicht null sein, da es niemals null zugewiesen werden kann

//Ich habe versucht, es auf Null zu setzen
var str2: String? = "Basil Risiko Zeit"
str2 = null    //Kein Kompilierungsfehler
val len2 = str2.length    //Kompilierungsfehler!!Werde ein Nullpo--Ich sagte

//Sie können auch so schreiben
val len2 = str2?.length    //Dies wird ausgeführt, wenn es nicht null ist, andernfalls wird null zurückgegeben
val len2 = b?.length ?: -1    //Die bedingte Verzweigung durch Null kann mit dem Elvis-Operator problemlos durchgeführt werden

Ich sagte, dass Kotlin Null Pos verhindern kann, indem es dies verwendet, aber ich denke, dass es derzeit nur wenige Systeme gibt, die nur auf Kotlin laufen. Es ist fast so, als würde man Kotlin verwenden, um einem im ursprünglichen Java integrierten System Funktionen hinzuzufügen. Nur weil es in Kotlin geschrieben ist, passiert nullpo, wenn Java beteiligt ist. Ich möchte darauf hinweisen, dass das Schreiben in Kotlin nicht bedeutet, dass es kein Nullpo gibt.

Lass uns etwas machen

Stellen Sie den Code der zuvor erstellten Android-Stoppuhr-App bereit. Es ist ein verdammter Code, der überhaupt nicht an Objektorientierung denkt. Eine ausführliche Erklärung wird irgendwann in der Zukunft gegeben. .. ..


class MainActivity : AppCompatActivity() {

    val handler = Handler()
    var timeValue = 0


    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)

        val timeText = findViewById<TextView>(R.id.timeText)
        val startButton = findViewById<Button>(R.id.start)
        val stopButton = findViewById<Button>(R.id.stop)
        val resetButton = findViewById<Button>(R.id.reset)

        val runnable = object : Runnable {
            override fun run() {
                timeValue++

                timeToText(timeValue)?.let {
                    timeText.text = it
                }
                handler.postDelayed(this, 1000)
            }
        }

        startButton.setOnClickListener {
            handler.post(runnable)
        }

        stopButton.setOnClickListener {
            handler.removeCallbacks(runnable)
        }

        resetButton.setOnClickListener {
            handler.removeCallbacks(runnable)
            timeValue = 0
            timeToText()?.let {
                timeText.text = it
            }
        }
    }


    private fun timeToText(time: Int = 0): String? {
        return if (time < 0) {
            null
        } else if (time == 0) {
            "00:00:00"
        } else {
            val h = time / 3600
            val m = time % 3600 / 60
            val s = time % 60
            "%1$02d:%2$02d:%3$02d".format(h, m, s)
        }
    }
}

Wow es hat funktioniert! !! !!

スクリーンショット 2017-12-15 11.16.09.png

Zusammenfassung

Ich habe diesmal einen Artikel über Kotlin geschrieben, aber ich muss noch lernen. Nach vielen Recherchen fand ich viele Dinge, die ich nicht wusste. Lass uns zusammen mit Interessierten lernen! !! Außerdem freue ich mich auf das Aqours-Fan-Meeting! !! Ich gehe nach Fukuoka und Makuhari! !! Drei └ (┐ 卍 ^ o ^) 卍 Durururu

Beiseite

Wir freuen uns, ** "Kotlin-Unterstützung einschließen" ** zum neuesten Android Studio hinzuzufügen. Die erste Vorbereitung wird viel einfacher sein.

Recommended Posts

Über Kotlin
Über =
Was ich über Kotlin gelernt habe
Über method.invoke
Über attr_accessor
Über Hinemos
Über die Vererbung
Über Docker
Über Schienen 6
Über den Frühling ③
Kotlin Bytecode
Über Aufzählung
Kotlin Infix
Über Polymorphismus
Über Optional
Über Hash
Über JitPack
Darüber ()
Über die Kapselung
Über JAVA_HOME
Über statische
Über Ausnahmen
Über den Umfang
[Maven] Über Maven
Spring Dependency Injection mit Java, Kotlin
Informationen zur Ausnahmebehandlung
Über die Java-Schnittstelle
[Java] Informationen zu Java 12-Funktionen
Informationen zum Rails-Routing
HMAC in Kotlin
Über zyklische Komplexität
Informationen zur Ausnahmebehandlung
Informationen zu AsyncTask-Generika
Über Ruby-Symbole
Informationen zur Array-Multiplikation
[Java] Über Arrays
Informationen zur Klassenvererbung.
Über Spring AOP
Über Ruby Hash
Über singuläre Methoden
Informationen zum Erstellen von Tools
Kauen Sie über API
[Über Double Hash]
Etwas über Java
Wo ist mit Java?
Über die Methode von HttpServlet ()