1.Kotlin 是什么? Kotlin 是一种在 Java 虚拟机上运行的静态类型编程语言,被称之为 Android 世界的Swift,由 JetBrains 设计开发并开源。
在Google I/O 2017中,Google 宣布 Kotlin 成为 Android 官方开发语言。
2.为什么选择 Kotlin?
简洁: 大大减少样板代码的数量。
安全: 避免空指针异常等整个类的错误。
互操作性: 充分利用 JVM、Android 和浏览器的现有库。
工具友好: 可用任何 Java IDE 或者使用命令行构建。
3.我的第一个 Kotlin 程序 1 2 3 fun main (args: Array <String >) { println("hello word!" ) }
Kotlin 程序文件以 .kt 结尾,如:hello.kt 、app.kt。
4.基础语法
格式:
1 2 3 fun 方法名(参数A : 类型A , 参数B : 类型B ) : 返回值类型(可以为空) { 函数体 }
如:
1 2 3 fun sum (a: Int , b: Int ) : Int { return a + b }
1 2 3 4 5 6 7 8 9 fun main () { var result = add(3 ,5 ) println(result) }fun add (x: Int , y: Int ) : Int = x+ y
1 2 3 4 5 6 7 8 fun vars (vararg v:Int ) { for (vt in v){ print(vt) } }fun main (args: Array <String >) { vars(1 ,2 ,3 ,4 ,5 ) }
1 2 3 4 5 6 fun calThePerimeterOfCircle (pi: Float = Pi, r: Float ) : Float { return 2 * pi * r }fun main () { println("圆的周长为:${calThePerimeterOfCircle(r = 2.0 f)} " ) }
1 2 3 4 5 6 7 8 fun main () { var i = {x: Int , y: Int -> x+ y} println(i(3 ,5 )) var j:(Int ,Int ) -> Int = {x,y -> x+y} println(i(4 ,5 )) }
1 2 3 4 5 6 7 8 fun returnBigValue (a:Int ,b:Int ) :Int { return if (a>b) a else b }fun main (args: Array <String >) { var a= 3 var b = 5 println("${a} 和${b} 中较大的数是${returnBigValue(1 ,2 )} " ) }
1 2 3 4 5 6 7 8 9 10 fun gradeStudent (score:Int ) { when (score){ 10 -> println("优秀!" ) 1 -> println("差劲!" ) else -> println("努力努力!" ) } }fun main () { println(gradeStudent(9 )) }
1 2 3 4 5 6 7 8 9 fun main () { var items = listOf<String>("语文" ,"数学" ,"英语" ); for (i in items){ println("科目有:${i} " ) } for ((i,index) in items.withIndex()){ println("科目为:${i} ,序号为${index} " ) } }
1 2 3 4 5 6 fun main () { var map = TreeMap<String,String>() map["好" ] = "good" map["坏" ] = "bad" println(map["好" ]) }
1 2 3 4 5 6 fun main () { var a = "string" var b = 1 println("字符串转数字:${a.toString()} " ) println("数字转字符串:${b.toInt()} " ) }
1 2 3 4 5 6 7 8 9 10 fun main () { println("请输入第一个数字:" ) var str1 = readLine() println("请输入第二个数字:" ) var str2 = readLine() var num1 = str1!!.toInt() var num2 = str2!!.toInt() println("${num1} +${num2} =${num1+num2} " ) }
1 2 3 4 5 6 7 8 9 10 11 12 13 fun main () { println("请输入第一个数字:" ) var str1 = readLine() println("请输入第二个数字:" ) var str2 = readLine() try { var num1 = str1!!.toInt() var num2 = str2!!.toInt() println("${num1} +${num2} =${num1+num2} " ) }catch (e: Exception){ println("输入的数据有误!" ) } }
1 2 3 4 5 6 7 8 9 10 11 fun main (args: Array <String >) { var a = 1 val s1 = "a is $a " a = 2 val s2 = "${s1.replace("is" , "was" )} , but now is $a " println(s2) }
1 2 3 4 5 6 7 8 var age: String? = "23" val ages = age!!.toInt()val ages1 = age?.toInt()val ages2 = age?.toInt() ?: -1
5.类 5.1 类的创建 Kotlin 中没有 new 关键字
1 2 3 4 5 6 7 8 9 class Rectangular { var width:Int = 10 var height:Int = 5 }fun main () { var rectangular = Rectangular() println(rectangular.height) }
5.2 枚举类 1 2 3 enum class Color { RED,BLACK,BLUE,GREEN,WHITE }
6. Kotlin 继承 Kotlin 中所有类都继承该 Any 类,它是所有类的超类,对于没有超类型声明的类是默认超类:
1 class Example // 从 Any 隐式继承
Any 默认提供了三个函数:
1 2 3 4 5 equals () hashCode () toString ()
注意:Any 不是 java.lang.Object。
如果一个类要被继承,可以使用 open 关键字进行修饰。
1 2 3 open class Base (p: Int ) // 定义基类class Derived (p: Int ) : Base (p )
7.Kotlin 接口 Kotlin 接口与 Java 8 类似,使用 interface 关键字定义接口,允许方法有默认实现:
1 2 3 4 5 6 7 interface MyInterface { fun bar () fun foo () { println("foo" ) } }
1 2 3 4 5 6 7 8 class Child : MyInterface1 ,MyInterface2 { override fun bar1 () { } override fun bar2 () { } }