Kotlin学习笔记(一) 语言基础
Kotlin一系列文章是笔者的学习笔记。会把要点都一一列出来,但是这些要点是构建在笔记自身知识体系之上,对你可能不适合。比如笔者写过java, 也写过C#,会和他们比较。
- val与var, val就是C# 的readonly
- 三重引号(“”“)相当于C# 的@”“,用来转义。
- 模板表达式:字符串中有${ }, 那么可以在里面写代码。
- 没有三元运算符,可以用if(a>b) a else b替换。 很怪的用法。if语句成了可以有返回值的方法了。
- unit类型
- when表达式, 相当于switch case; 最后的else就是default. 更加灵活。in和!in , 用于表达是否在某个集合里面。类型必须和when中输入相同。
when(x){
-1, 0 -> {表达式0}
1 -> {表达式1}
is Int -> {表达式2}
is Int -> {表达式2}
else ->{
}
}
- for循环
for(i in 1 .. 100){} 从1到100, 1和100也包括
for(i in 1 until 100){ }从1到100, 1包括,100不包括
for(i in 1 .. size){ }
for(i in 1 until size){ }
for (index in 1..100 step 2){
print(index)//会输出1..3..5
}
用indices
val array = arrayOf("a", "b", "c")
for (index in array.indices){
println("index=$index")//输出0,1,2
}
- foreach 循环,用indices和withindex,可以完成下标遍历。
val array = arrayOf("a", "b", "c")
for (element in array){
println("element=$element")//输出a,b,c
}
val array = arrayOf("a", "b", "c")
for ((index,e) in array.withIndex()){
println("下标=$index----元素=$e")
}
- while()和do{}while()和java一样。
- return语句, 特殊的地方,可以直接用=符号来直接返回一个函数的值。
fun sum(a: Int, b: Int) = a + b
fun max(a:Int, b:Int) = if(a>b) a else b
甚至可以这样调用:
val f = fun(a:Int, b:Int) = a+b
还有一个特别情况:
val f = fun(a:Int, b:Int) = {a+b} //和上面不同的是,方法体加了大括号, 从此返回的是函数指针。不再是a加b的结果。
f.invoke(1,1) //这时调用方式
任何表达式都可以用标签(label)来标记。 依赖标签跳转。这是什么垃圾一样的功能,和C语言的goto一样。项目中绝对不允许使用。容易乱。
val intArraies = intArrayOf(1, 2, 3, 4, 5)
intArraies.forEach here@{
if (it == 2) {
return@here
}
}
如果是接受lamda表达式的地方,默认就有标签,名字是方法名, 比如上面forEach,默认标签是forEach@
intArraies.forEach { if (it == 2) { return@foreach} }
- this关键字
特别的地方,就是可以用标签。这个java不一样, java是类名.this来表示。
class outer{
inner class inner{
this@outer // 这个this就是outer对象。
this@inner // 这个this就是inner对象。
}
}
- super关键字和java一样
- elvis操作符,就是精简三元运算符的一种
java的方式:
Object a = null;
Object b= (a!=null)?a;new Object()
Kotlin的方式
Object b = a?:new Object()
- infix函数,可以增加可读性
infix fun Int.add(x: Int): Int { return this + x }
println(100 add 200)
输出是300
- 扩展函数/扩展属性。 可以给没有修改权限的系统类,添加方法和属性
更多推荐


所有评论(0)