[JAVA] À propos de Kotlin

SLP KBIT Advent Calendar 2017 12/17 (Sun) article.

introduction

Bonjour, je suis Nya-chan (itakumi), étudiante de troisième année à la Faculté de programmation étudiante SLP, Université de Kagawa. Puisque le boom de Kotlin m'est arrivé récemment, je voudrais écrire sur la façon dont Kotlin a un goût par rapport à Java, que tout le monde connaîtra pour que même les élèves de première et de deuxième année soient intéressés. C'est le seul et unique Kotlin sur ce calendrier. De temps en temps, soyez guéri en ne voyant qu'un article d'introduction linguistique qui n'est pas du tout de haut niveau.

Tout d'abord, à propos de Kotlin

Tout d'abord, je pense qu'il y a des gens qui disent Kotlin avant de parler de la syntaxe concrète. Kotlin est un langage orienté objet à typage statique développé par Andrey Breslav et Dmitry Gemerov de Jet Brains. Le logo est celui ci-dessous

image.png

Jet Brains est célèbre pour le développement d'environnements de développement pour les langages de programmation tels que IntelliJ IDEA et RubyMine. Kotlin est une version améliorée du langage Java basée sur l'expérience de Jet Brains qui le rend encore plus simple et plus sécurisé. Donc Kotlin est un langage dit JVM qui s'exécute sur des machines virtuelles Java (JVM). Scala écrit par M. Gray Kuma hier est également un langage JVM. Eh bien, c'est tout pour la première explication, et j'aimerais examiner la syntaxe spécifique à partir de maintenant.

À propos de la syntaxe

Hello World Quel est le premier programme que vous créez lorsque vous touchez pour la première fois le langage de programmation? ?? ?? ?? alors! !! ** HelloWorld ** C'est vrai. Le haut est le programme Hello World de Java et le bas est 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!")
}

Quoi? Très court !!! Oui Kotlin est très court. Teka Java est long. Kotlin est beaucoup plus propre à écrire que Java. Vous n'avez pas besoin d'un point-virgule à la fin de la phrase. Les gens de Jet Brains oublient-ils souvent le point-virgule? ?? Vous pouvez également définir comment écrire une classe en utilisant le nom de la fonction fun (nom de la variable: nom du type). System.out.println est également OK avec juste println !!

Comment gérer les variables

Viennent ensuite les variables. En gros, c'est la syntaxe.

val num = 10    //Ne peut pas être modifié avec val
var i = 10      //Peut être changé avec var
i = 20

De plus, si vous souhaitez spécifier le type explicitement,

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

Faire. Au début, val et var peuvent être confondus, mais une fois que vous vous y êtes habitué, il n'y a pas de problème.

Eh bien, vous pouvez écrire la syntaxe de base d'une manière simple, mais elle sera longue, donc si vous êtes intéressé par d'autres choses, veuillez la vérifier.

Nullable Alors la syntaxe est plus simple et plus facile à comprendre que Java, mais c'est tout? Je vais donc vous présenter celui qui est dans Kotlin bien qu'il n'y ait pas de Java. Il existe une exception NullPointerException que les personnes qui développent quelque chose en Java vont sûrement tomber. C'est un gars qui est souvent appelé Nurponurupo. Kotlin a un mouvement appelé le Mouvement pour éliminer NullPointerException (un mensonge). Kotlin ne peut affecter null qu'avec un type spécial appelé Nullable. Cela empêchera NullPointerException. La méthode d'écriture spécifique est la suivante.

//Le type de chaîne ordinaire ne peut pas être affecté à null
var str1: String = "banane"
str1 = null    //Erreur de compilation
val len1 = str1.length    //C'est acceptable. str1 ne peut pas être nul car il ne peut jamais être attribué nul

//J'ai essayé de le rendre nul
var str2: String? = "Temps de risque de basilic"
str2 = null    //Aucune erreur de compilation
val len2 = str2.length    //Erreur de compilation!!Devenez un nullpo--Est dit

//Vous pouvez aussi écrire comme ça
val len2 = str2?.length    //Cela s'exécutera s'il n'est pas nul, sinon il retournera null
val len2 = b?.length ?: -1    //Le branchement conditionnel par null peut être facilement effectué avec l'opérateur Elvis

J'ai dit que Kotlin peut empêcher la position nulle en utilisant ceci, mais je pense qu'il y a peu de systèmes actuellement exécutés sur Kotlin seul. C'est presque comme utiliser Kotlin pour ajouter des fonctionnalités à un système construit dans le Java d'origine. Donc, juste parce qu'il est écrit en Kotlin, lorsque Java est impliqué, nullpo se produit. Je voudrais noter qu'écrire en Kotlin ne signifie pas qu'il n'y a pas de nullpo.

Faisons quelque chose

Exposez le code de l'application de chronomètre Android que vous avez créée précédemment. C'est un putain de code qui ne pense pas du tout à l'orientation des objets. Une explication détaillée sera donnée quelque part dans le futur. .. ..


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 ça a marché! !! !!

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

Résumé

J'ai écrit un article sur Kotlin cette fois, mais j'ai encore besoin d'apprendre. Après de nombreuses recherches, j'ai trouvé beaucoup de choses que je ne savais pas. Étudions ensemble avec des personnes intéressées! !! Aussi, j'attends avec impatience le fan meeting d'Aqours! !! Je vais à Fukuoka et Makuhari! !! Trois └ (┐ 卍 ^ o ^) 卍 Durururu

De côté

Nous sommes heureux d'ajouter ** "Inclure le support Kotlin" ** au dernier Android Studio. La première préparation sera beaucoup plus facile.

Recommended Posts

À propos de Kotlin
À propos =
Ce que j'ai appris sur Kotlin
À propos de method.invoke
À propos de attr_accessor
À propos de Hinemos
À propos de l'héritage
À propos de Docker
À propos des rails 6
À propos du printemps ③
Kotlin Bytecode
À propos d'énumération
Infixe de Kotlin
À propos du polymorphisme
À propos facultatif
À propos du hachage
À propos de JitPack
À propos de ça ()
À propos de l'encapsulation
À propos de JAVA_HOME
À propos de statique
À propos des exceptions
À propos de la portée
[Maven] À propos de Maven
Injection de dépendances Spring à l'aide de Java, Kotlin
À propos de la gestion des exceptions
À propos de l'interface Java
[Java] À propos des fonctionnalités de Java 12
À propos du routage des rails
HMAC à Kotlin
À propos de la complexité cyclique
À propos de la gestion des exceptions
À propos des génériques AsyncTask
À propos des symboles Ruby
À propos de la multiplication des tableaux
[Java] À propos des tableaux
À propos de l'héritage de classe.
À propos de Spring AOP
À propos de Ruby Hash
À propos des méthodes singulières
À propos des outils de création
Mâchez l'API
[À propos du double hachage]
Quelque chose à propos de java
Où est Java
À propos de la méthode de HttpServlet ()