在kotlin中if 是表达式;Java中赋值操做是表达式,而在kotlin中变成了语句java
kotlin中声明变量以关键字开始,而后是变量名称,最后能够加上类型数组
关键字:val--表示不可变引用,对应java中的final
函数
var--表示可变引用ui
字符串模板:或者用${}包围一个表达式spa
fun main(args: Array<String>) {
println("Hello, ${if (args.size > 0) args[0] else "someone"}!")
}
复制代码
用关键字fun
来声明函数.net
能够定义在文件最外层,没必要放入类中code
表达式函数体:若是一个函数体是由单个表达式构成,能够用这个表达式做为一个完整的函数体对象
例如:对以下接口
//代码体块
fun max(a: Int, b: Int): Int {
return if (a > b) a else b
}
复制代码
//表达式函数体
fun max(a: Int, b: Int):Int = if (a > b) a else b
复制代码
//表达式函数体+类型推导
fun max(a: Int, b: Int) = if (a > b) a else b
复制代码
数组就是类element
只有数据没有代码的对象叫作值对象
属性:
person.isMarried = false
实际调用的是setter自定义访问器
class Rectangle(val height: Int, val width: Int) {
val isSquare: Boolean
get() {
return height == width
}
}
复制代码
标记类实现接口,例如:
class Num(val value: Int) : Expr
复制代码
when
相似于java中的switch但功能更增强大if
和when
均可以使用代码块做为分支体,在这种状况下,代码块中的最后一个表达式就是结果
区间:本质上是两个值之间的间隔,一个起始值,一个结束值用..
来表示区间
Kotlin中区间是闭合的,这就意味这第二个值始终是区间的一部分
//从100开始倒着计数而且只记偶数
for (i in 100 downTo 1 step 2) {
print(fizzBuzz(i))
}
复制代码
使用until
来表示不包含指定结束值得半闭合区间
迭代map
//letter表明key, binary表明value, binaryReps表明Map
for ((letter, binary) in binaryReps) {
println("$letter = $binary")
}
复制代码
可使用map[key] = value
来设置读取值,binaryReps[c] = binary
等价于 binaryReps.put(c, binary)
用withIndex()
在迭代集合时追踪当前项的下标,不须要建立一个单独的变量来存储下标并手动增长他:
val list = arrayListOf("1", "11", "111")
for ((index, element) in list.withIndex()) {
printlin("$index: $element")
}
复制代码
使用in
来检查集合和区间的成员
in
运算符来检查一个值是否在区间中,!n
检查这个值是否不在区间中is
检查和java中的instanceOf
类似,在检查过变量具备某种类型以后没必要再显式地转换它的类型:编译器使用智能转换as
关键字来表示到特定类型的显示转换new
关键字来建立异常实例throw
结构是一个表达式,能做为另外一个表达式的一部分使用ps:本文参考自:《kotlin实战》
之后每一周会坚持更新一篇读书笔记