var a: Int = 5 get() = field * 10 set(value){ println("我被赋值了") field = value } funmain(){ println(a) }
数字类型
Byte Short Int Long
127 32767 2^31-1 2^63-1 (max值)
Boolean
判断x是否在a与b之间
1
var y: Boolean = x in a..b
String
可以使用三引号 输出原始字符串 包括换行空格
1 2 3 4 5 6
//trimIndent 去除缩进 var b : String = """ 111 222 333 555 """.trimIndent()
字符串拼接默认只能 字符串+其他类型 需要用占位符
1 2
var b = 10 var a = "${b}个数量"
if
没有三元运算符
1
var a = if (s>60) "Yes" else "No"
when
类switch
1 2 3 4 5 6 7 8 9 10
when(a){ 10 -> println("a is 10") 20 -> println("a is 20") else -> println("a is not 10 or 20") } var c = when (b) { 'Q' -> 'q' 'W' -> 'w' else -> 'E' }
for
1 2 3 4 5 6
//可以遍历 数组、区间、实现运算符重载函数iterator的类 var range = 1..10 step 2 for (i in range) { println(i) }
while略
函数
1 2 3 4 5 6 7
fun 函数名(参数列表...): 返回类型{函数体} //传参可以申明默认值 fun hello(a: Int = 10,b Int = 10): = a+b
fun main{ println(hello(b=10)) }
Unit类似Java的void可以省略
函数内部也可以定义函数
函数类型
Kotlin的函数可被变量存储,也就是说可以用变量接受函数
1
var func0(Int)->String //函数类型为Int返回值类型为String的函数
给函数类型起别名
1
typealias Text = (Int)->String
使用lambda 函数里传参为函数的函数为高阶函数
1 2 3
var func: (String) -> Int = {it->10} var func2: (String, String) -> Unit = {_,b-> println(b)} func2("a","b")
内联函数
inline
类与对象
主构造函数没有注解和可见性修饰符可以省略 constructor 关键字
1 2 3 4 5 6 7 8 9 10 11 12
class Student(var width: Int, var height: Int) { lateinit var name: String //懒加载 先不指定初始值 var age = 0 val area get() = width * height constructor(name: String) : this(name,18) //次要构造函数 这里调用主构造函数 init{ println("初始化构造方法") } fun(){ println("成员方法") } }
// 键值对集合 val map1: MutableMap<Int, String> = mutableMapOf(1 to "a", 2 to "b", 3 to "c") println(map1[1]) // 对键值对进行解构 val pair: Pair<Int, String> = 1 to "a"
//遍历 for(entry in map1){ entry.key entry.value } for ((key, value) in map1) { println("key: $key, value: $value") } map1.forEach { (key, value) -> println("key: $key, value: $value")}
map1 += Pair(4, "d")// 添加键值对 println(map1) map1.putAll(mapOf(5 to "e", 6 to "f"))// 添加键值对 println(map1) map1.remove(1)// 删除键值对 // 获取键值对 没有值时,返回默认值 map1.getOrDefault(7, "A") map1.getOrElse(7,){ "A" } // 获取键值对 没有值时,添加键值对并返回值 map1.getOrPut(7){ "A"}