一、Kotlin基础语法
2018-04-04 16:42
232 查看
Kotlin基础语法 Kotlin文件以 .kt 为后缀 默认导入: * Kotlin.* *Kotlin.annotation.* *Kotlin.collection.* *... 函数定义 函数定义用关键字 fun ,参数格式为 : 参数:类型 fun sum(a:Int , b:Int ):Int { //Int类型的参数,Int类型的返回值 return a + b; } 表达式作为函数体:返回类型自动推断 fun sum(a:Int,b:Int) = a+ b //public方法必须明确写出返回类型 public fun sum(a:Int,b:Int):Int = a+b 无返回值的函数 fun printfSum(a:Int , b:Int):Unit { println(a+b) } fun printfSum(a:Int , b:Int):Unit { println(a+b) } //如果返回的是Unit类型,则可以省略 public fun printSum(a:Int,b:Int) { print(a+b) } 可变长参数 函数的变长参数可以用vararg关键字进行标识 fun main(args: Array<String>) { vars(1,2,3,4,5) } fun vars(vararg v:Int){ for(vt in v){ print(vt) } } Lambda(匿名函数) Lambda表达式使用实例: val sumLambda:(Int,Int) -> Int = {x,y -> x+y} println(sumLambda(1,2)) 定义常量与变量 可变变量定义:var 关键字 Var <标识符> : <类型> = <初始化值> 不可变变量定义:val关键字,只能赋值一次的变量(类似java中final修饰的变量) Val <标识符> : <类型> = <初始化值> 常量与变量都可以没有初始化值,但是在引用前必须初始化编译器支持自动类型判断,即声明时可以不指定类型,由编译器判断 val a:Int = 1 val b =1 //系统自动推断变量类型为Int val c: Int //如果不在声明时初始化则必须提供变量类型 c = 1 //明确赋值 var x= 5 x+=1 //变量可修改 注释 // var x= 5 /* var x= 5 x+=1 */< 4000 /span> 与java不同,Kotlin中的块注释允许嵌套 字符串版本 $表示一个变量名或者变量值 $varName 表示变量值 ${varName.fun}表示变量的方法返回值: var a= 1 //模板中的简单名称 val s1 = "a is $a" a = 2 //模板中的任意表达式 val s2 = "${s1.replace("is","was")},but now is $a" NULL检查机制 Kotlin的空安全设计对于声明可为空的参数,在使用时要进行空判断处理,有两种处理方式,字段后面加!!像java一样抛出异常,另外一种字段后面加?可不做处理返回值为null或配合?:做空判断处理 //类型后面加?表示可为空 var age:String ?= null //抛出空指针异常 val ages = age !! .toInt() //不做处理返回null val ages1 = age ?.toInt() //age为空返回-1 val ages2 = age ?.toInt()?:-1 当一个引用可能为null值时,对应的类型声明必须明确地标记为可为null 当str中的字符串内容不是一个整数时,返回null; 类型检测及自动类型转换 我们可以使用is运算符检测一个表达式是否是某类型的一个实例(类似于java中instanceof关键字) fun getStringLength(obj:Any):Int?{ if(obj is String){ //做过类型判断以后,obj会被系统自动类型转换为String类型 return obj.length } //在这里还有一种方法,于java中instanceof不同,使用!is // if(obj !is String){ // //XXX // } //这里的obj仍然是any类型的引用 return null } 或者 fun getStringLength(obj:Any):Int?{ if(obj !is String) return null //在这个分支中,‘obj’的类型会被自动转换为‘String’ return obj.length } 甚至还可以 fun getStringLength(obj:Any):Int?{ //在‘&&’运算符的右侧,'obj'的类型会被自动转换为‘String’ if(obj is String && obj.length >0) return obj.length return null } 区间 区间表达式由具有操作符形式..的rangeTo函数辅以in和!In形成 区间是为任何可比较类型定义的,但对于整体原生类型,它有一个优化的实现,以下是使用区间的一些示例: for(i in 1..4) print(i) //输出‘1234’ for(i in 4..1) print(i) //什么都不输出 for(i in 1..10){ //等同于1<= i && i<=10 println(i) } //使用step指定步长 for(i in 1..4 step 2) print(i) //输出‘13’ for(i in 4 downTo 1 step 2) print(i) //输出‘42’ //使用until函数排除结束元素 for(i in 1 until 10 ){ //i in [1,10)排除了10 println(i) }
相关文章推荐
- Kotlin基础语法
- Kotlin学习(一)基础语法
- Kotlin语法基础,运算符
- Kotlin语法基础,运算符
- Kotlin系列之基础语法
- kotlin的基础语法
- Android Kotlin学习--基础语法
- Kotlin基础语法 之 区间
- Kotlin基础语法
- Kotlin 基础语法-04
- kotlin基础语法(一)
- Kotlin(二)-->基础语法
- Kotlin 基础语法-03
- Kotlin - 开始 - 1 基础语法
- kotlin 官方学习教程之基础语法
- 《Kotlin 程序设计》第四章 Kotlin 语法基础
- Kotlin基础教程-基础语法(2)
- Kotlin(二)-->基础语法
- Kotlin语法基础之控制流
- Kotlin语法基础,基础类型