Kotlin
1)数据类型
2) 变量声明:
val:对应java - final ,不可变的变量(这不是常量嘛?)
eg. 表示一个区间 val range = 0..10 或 val range = 0 until 10
var:可变变量
3)函数
格式:fun functionname(param1:Int, param2:Int): Int { return 0 } 参数列表后面的Int是返回值类型,没有可以不写。
单行代码语法糖:fun methodName(param1: Int, param2: Int) = 0
4)逻辑控制语句
a) if:Kotlin中if语句相比Java有一个额外功能:可以有返回值。
1 fun largerNumber(num1: Int, num2: Int): Int {
2 return if (num1 > num2) {
3 num1
4 } else {
5 num2
6 }
7 }
语法糖:
fun largerNumber(num1: Int, num2: Int) = if (num1 > num2) num1 else num2
b) when:
1 fun getScore(name: String) = when (name) {
2 "Tom" -> 86
3 "Jim" -> 77
4 "Jack" -> 95
5 "Lily" -> 100
6 else -> 0
7 }
c) for:
1 fun main() {
2 for (i in 0..10) { 降序:把..换成 downTo 跳过: for (i in 0 until 10 step 2)
3 println(i)
4 }
5 }
d)class:
1 class Person { 默认不可继承,除非声明 open class 继承需要使用冒号 class Student:Person(){}
2 var name = ""
3 var age = 0
4
5 fun eat() {
6 println(name + " is eating. He is " + age + " years old.")
7 }
8 }
9
10 fun main() {
11 val p = Person()
12 p.name = "Jack"
13 p.age = 19
14 p.eat()
15 }
e) data:自定义数据类,可以使用 equals()、hashCode()、toString()等方法
data class Cellphone(val brand: String, val price: Double)
f)object:可以用该关键字定义一个单例类
1 object Singleton {
2 fun singletonTest() {
3 println("singletonTest is called.")
4 }
5 }
6 Singleton.singletonTest()
5)Lambda
6) 函数式API
Android中有一个极为常用的点击事件接口OnClickListener,假设现在我们拥有一个按钮button的实例
button.setOnClickListener { v ->}
7)可空运算符(跟C#一样)
? 操作符表示当对象不为空时正常调用相应的方法,当对象为空时则什么都不做。
eg. a不为空则返回a 否则返回b
val c = a ?: b