参考《第一行代码——Android(第3版)》做些笔记
1、变量声明
val aaa
var bbb
val
常量 只能初始化赋值一次
var
变量 可以多次赋值
无须声明类型,可类型推导。
使用示例:
fun printaaa(){
val aaa = 123
println("aaa is "+aaa)
}
从+
这里看出来,kotlin很现代,应该是有很多新语言特性。如果真的颠覆了Java,Java老白兔岌岌可危。
注意 不加分号。不看缩进(这就是我讨厌python 的原因)。
2、带类型声明
val aaa:Int
类型都封装到类里了,不再是关键字了?那是不是有method可用?
常用类型和C/C++一样,不过第一个字母变成大写,变成了类。
关键字fun
来声明:
fun func(para1:Int, para2:String):Int{
code here
return 0
}
()
可以为空,表示无参数。
:Int
表示返回值类型,没有返回值可以不写。
这里有适用于单行代码函数的语法糖:
fun func(参数1,参数2):Int=单行表达式
:Int
也可省略,利用上类型推导。
1、if…else
使用上和别的没区别,不同的是会把每个分支最后一句的表达式当作if…else语句的返回值。
精简用法:
fun largerNumber(num1: Int, num2: Int) = if (num1 > num2) num1 else num2
2、when
类似于switch,但是不用break。感觉更好用。
比较进入–匹配值 -> { 执行逻辑 }:
带参数:
fun getnum(name: String) = when (name) {
"aaa" -> 1
"bbb" -> 2
"cc" -> 3
"d" -> 4
else -> 0
}
不带参数:
实际上使用起来,感觉像是把参数套入下方的匹配值表达式中比较,如果表达式成立,就执行右边的内容:
fun getnum(name: String) = when {
name.startsWith("Wang") -> 60
name == "Li" -> 77
name == "Zhang" -> 95
else -> 0
有两种循环,while 和 for in。
while和其他的语言没什么区别。
for in (我觉得 新出来的一些语言是不是都喜欢搞 for in 这种东西)比较不同。
声明一个从小到大的闭区间:
val range = 0..100
左闭右开区间:
val range = 0 until 100
使用示例:
fun main(){
//升
for (i in 0 until 100 step 10){
println(i)
}
//降
for (i in 100 downTo 50 step 5){
println(5)
}
}