Kotlin Overview

Kotlin Overview

  Kotlin是由JetBrains开发,基于JVM的新的编程语言,在Apache许可下已开源。在Google I/O 2017中,Google宣布Kotlin成为Android的官方开发语言。Kotlin是兼容Java的语言,与Java可以百分百互操作。Kotlin是对现有的java的扩展、增强,相比Java,Kotlin更简洁、更安全、更具表达性,吸收了很多现代编程语言的特性,如类型推断、扩展函数、函数式编程支持等。

简洁

变量不需要声明类型,kotlin可以根据值自动推断出类型

var varInt = 1  			//自动推断出变量类型为整数
var varString = "string" 	//自动推断出变量类型为字符串

var a: String = "initial"    //指明类型
val b: Int = 1              //只读变量
var c = ArrayList<String>() //不需要new

声明一个数据类只需一行代码(自动生成get、set、equals、hashCode、toString、componentN及copy函数)

data class User (val name: String,val age: Int)

想实现单例

object Singleton {
	val property = "singleton"
    ... ...
}

集合操作?Kotlin提供了大量集合操作符,一行代码搞定一个操作。

val numbers = listOf(1, -1, 2)
numbers.filter { it > 0 } == listOf(1, 2)   //筛选过滤
numbers.map { it * it } == listOf(1, 1, 4)   //生成新的集合
//以上只是一部分集合操作符

空指针安全

kotlin加入了空值判断,当某个变量的值可以为 null 的时候,必须在声明处的类型后添加 ? 来标识该引用可为空。一个声明为可空的变量或参数,在调用对象方法或者属性之前,需要加上?,否则编译无法通过。

 val str: String? = null    // 可空类型
 println(str.length())      // 编译错误
 println(str?.length())     //打印null
 println(str!!.length())     //抛异常

Lambdas

Kotlin支持Lambdas表达式

view.setOnClickListener { doSomething() } //如不需用到参数可直接省略
view.setOnClickListener { v->doSomething(v) }

val sum = { x: Int, y: Int -> x + y }
ints.filter { it>0 } //it指代ints数列中的项

高阶函数

在Kotlin中高阶函数可以作为参数和或者返回值。

//body是一个高阶函数,作为参数以及返回值
fun <T> lock(lock: Lock, body: () -> T): T {
    lock.lock()
    try {
        return body()
    }
    finally {
        lock.unlock()
    }
}

互操作

Kotlin可与Java进行100%的互操作,相互可以无缝调用,java程序员可以快速的学习熟练使用Kotlin进行开发。

其他

  以上只是Kotlin的一部分优秀特性,如函数、属性扩展、内联函数、委托属性等等。Kotlin提供了大量语法糖,使用java需要10几行代码实现,使用kotlin只需一行。学习直通车:Kotlin官网Kotlin中文网Kotlin Try Online

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值