Android官方开发语音--Kotlin

今天是 Google I/O 2017 大会第一日。一觉醒来,发现 Kotlin 成为了 Android 的官方开发语言。谷歌安卓团队今天在 Google I/O 2017 大会 上宣布对 Kotlin 提供 first-class 的支持。

Kotlin来自捷克一家软件研发公司JetBrains,这家公司开发很多不错的好IDE,包括IntelliJ IDEA、Pycharm、PHPStorm等工具,Google官方提供的Android Studio也是JetBrains公司提供的。Kotlin号称Android世界的Swift。官方网址

Kotlin的优势:

  1. 创建一种兼容Java的语言
  2. 编译速度至少同Java一样快
  3. 比Java更安全
  4. 比Java更简洁
  5. 比最成熟的竞争者Scala还简单

主要特性如下所示:

  1. 轻量级:这一点对于Android来说非常重要。项目所需要的库应该尽可能的小。Android对于方法数量有严格的限制,Kotlin只额外增加了大约6000个方法。

  2. 互操作:Kotlin可与Java语言无缝通信。这意味着我们可以在Kotlin代码中使用任何已有的Java库;因此,即便这门语言还很年轻,但却已经可以使用成百上千的库了。除此之外,Kotlin代码还可以为Java代码所用,这意味着我们可以使用这两种语言来构建软件。你可以使用Kotlin开发新特性,同时使用Java实现代码基的其他部分。

  3. 强类型:我们很少需要在代码中指定类型,因为编译器可以在绝大多数情况下推断出变量或是函数返回值的类型。这样就能获得两个好处:简洁与安全。

  4. Null安全:Java最大的一个问题就是null。如果没有对变量或是参数进行null判断,那么程序当中就有可能抛出大量的NullPointerException,然而在编码时这些又是难以检测到的。Kotlin使用了显式的null,这会强制我们在必要时进行null检查。

  5. 高阶函数、操作符重载、字符串模板等特征。

Demo演示
先来一段以前写过的demo来看看,也许你会因为它的简洁,方便而爱不释手。

fun main(args: Array<String>) {
 //  常量(使用val关键字声明):
val a: Int = 10
val b = 10    //    `Int`类型自动推断
val c: Int   // 如果没有初始值,声明常量时,常量的类型不能省略
c = 10     //   明确赋值

val strings = arrayOfNulls<String>(10)//定义数组
val strings1 = arrayOf("one", "two")

//    变量(使用var关键字声明):
var x = 5    // `自动推断出  Int`类型
x += 1

//    可空布尔
val isFirst: Boolean? = null
println("isFirst=$isFirst")

//    println(sum(c, x))
//    printSum2(a, b)
//    println(max2(c, x))
val list = ArrayList<String>()
list.add("one")
list.add("AA")
list.add("BB")
list.add("aCC")
list.add("Adc")
list.add("A133cdf")
list.add("A123cdf")
getArrayList(list)
}

/**
 * 定义函数
 */
fun sum(a: Int, b: Int): Int {
return a + b
}

fun sum2(a: Int, b: Float) = a + b

fun printSum(a: Int, b: Int): Unit {
println(a + b)
}

fun printSum2(a: Int, b: Int) {
println(a + b)
}


/**
 * 条件判断
 */
fun max(a: Int, b: Int): Int {
if (a > b) {
    return a
} else {
    return b
}
}
fun max2(a: Int, b: Int) = if (a > b) a else b


/**
 * 类型后添加“?”来标识该引用可为空
 */
fun parsenInt(str: String): Int? {
if (str is String) {
    return str.length
}
return null
}

/**
 * 判断后的分支中可以直接当作该类型使用,无需显式转换
 */
fun getStringLength(obj: Any): Int? {
if (obj is String) {
    //  `obj`在该条件判断分支内自动转换成`String`
    return obj.length
} else {
    //  在离开类型判断分支后,`obj`仍然是`Any`类型
    return null
}
}

/**
 * for循环
 */
fun getArray(args: Array<String>) {
for (arg in args) {
    print(arg)
}
for (i in args.indices) {
    print(args[i])
}
}

/**
 * while循环
 */
fun getArray2(args: Array<String>) {
var i: Int = 0
while (i < args.size) {
    print(args[i++])
}
}

/**
 * When表达式,比switch功能更强大
 */
fun case(obj: Any) {
when (obj) {
    1 -> print("One")
    "hello" -> print("String")
    is String -> print("This is String type")
    else -> print("unknown")
}
}

/**
 * 区间(range)
 */
fun range(args: Array<String>) {
val x = 0
//    是否在指定区间内
if (x in 1..10) {
    print("In")
} else {
    print("Out")
}

if (x !in 0..args.lastIndex) {
    print("Out")
}
}

/**
 * 使用集合
 */
fun getArrayList(names: ArrayList<String>) {
names.filter { it.startsWith("A") }
        .sortedBy { it }
        .map(String::toUpperCase)
        .forEach(::println)
}

是不是感觉爽爆了呢,现在开始可以抛弃Java了。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 160,387评论 4 364
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 67,845评论 1 298
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 110,091评论 0 246
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 44,308评论 0 214
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 52,662评论 3 288
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 40,795评论 1 222
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 32,008评论 2 315
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 30,743评论 0 204
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 34,466评论 1 246
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 30,687评论 2 249
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 32,181评论 1 262
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 28,531评论 3 258
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 33,177评论 3 239
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 26,126评论 0 8
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,902评论 0 198
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 35,862评论 2 283
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 35,734评论 2 274

推荐阅读更多精彩内容