admin

Kotlin 实战(一):初探 kotlin
前言关于 Kotlin 的介绍就不再过多的赘述了,原因有二:① 就目前情况,对 Kotlin 算是一无所知,根本写...
扫描右侧二维码阅读全文
08
2018/02

Kotlin 实战(一):初探 kotlin

前言

关于 Kotlin 的介绍就不再过多的赘述了,原因有二:① 就目前情况,对 Kotlin 算是一无所知,根本写不出什么介绍。② 官网自身就有介绍,看了也未必就能弄清 Kotlin 到底是个什么玩意儿,当然了,看了的话还是有一定好处的,在这里也就不复制粘贴上来了。
所以还是在实战中慢慢摸索吧。现在及以后的学习全部基于《Kotlin in Action》英文版。

编译及运行

在写 Kotlin 代码之前,心中一定会有个疑惑:Kotlin 代码如何编译以及如何运行?
在《Kotlin in Action》书中有个非常不错图:
start1.jpg
由此可以看出 Kotlin 最终还是编译出*.class文件,运行方法和java一致。我想这也是为什么 Kotlin 能够完全支持java代码的原因。至于图中Kotlin runtime作用还未知,从名字上看应该是和运行有关的,但已经打包成jar了,为什么还要这个东西,这里暂且不知。
*.kt文件编译官方有提供,一个简单的编译运行方法如下:

#编译
kotlinc <source file or directory> -include-runtime -d <jar name>
#运行
java -jar <jar name>

第一个 Kotlin 程序

在这里,就不用传统的 Hello World 例子了,《Kotlin in Action》一书中有更好的例子来展现 Kotlin 的特点。

package me._0o0.start

/**
 * Created by Mr.Xu on 2018/2/7.
 */
data class Person(val name: String,             //#1
                  val age: Int? = null)         //#2

fun main(args: Array<String>) {                 //#3
    val persons = listOf(Person("Alice"),
            Person("Bob", age = 19))                  //#4
    val oldest = persons.maxBy { it.age ?: 0 }  //#5
    println("The oldest is: $oldest")           //#6
}

#1: data class数据类的意思,这是在java中没有的,表示一个单纯的数据类而已,相当于java中没有业务逻辑方法的普通类,说白了就是 DTO
#2: Int?可空类型(这里是Int,还有String、布尔类型等也有,就是类型后面加个问号以及等号后面给定默认值),默认值为 null,这也是java没有的特性,个人感觉非常好用。
#3: fun main(args: Array<String>)Kotlin的程序入口函数,和java中的main函数差不多。
#4: Person("Bob", age = 19)参数中允许显示给出参数名字,我猜这个是为了有利于团队开发或者维护吧,虽然现在的 IDE 都能够自动显示参数,但 Kotlin 支持显示的给出,也是一个非常不错的点子。
#5: 这里涉及到Lambda表达式,暂且不说,后面学习到了Lambda再具体分析吧。it.age ?: 0 ?:(elvis) 操作符,就是 else value is的意思,和javaif-else三元表达式差不多,但它还有个作用就是相当于if null然后执行下一个语句。与之对应的还有if not null的写法,在这里就不多说了,以后专门学习语法的时候再介绍。
#6 The oldest is: $oldest字符串模板,也就是说 Kotlin 支持像其他脚本语言那样的写法,与java对比,这也是一个独特的地方。它不仅仅支持变量,还支持表达式,类似jsp中的EL表达式,写法也是${执行的语句}这种形式。
最终运行程序输出结果:

The oldest is: Person(name=Bob, age=19)

自动生成toString方法并调用。

结语

以上,一个简单的 Demo,简单地让我们看到了 Kotlin 的语法结构,也能够与 java 语法上做一个简单的比较了,可以看出,在语法上 Kotlin 的简洁性是完全超过了 java 的,也许有人不喜欢,但至少大多数人是这么认为的。让我,也渐渐地爱上这门语言吧~!

Last modification:February 8th, 2018 at 09:49 pm
If you think my article is useful to you, please feel free to appreciate

One comment

  1. lzyer

    icon_arrow.gif 不错。

Leave a Comment