原本最近的博文应该是写 Flutter-WanAndroid 项目相关的博文的,但是最近在公司一直用 Kotlin 写项目,回到家就懒得写 Flutter 了,之前学的 Flutter 又交回给书本了…(尴尬)。所以最近先把 Kotlin 相关的学习总结写上,Flutter-WanAndroid 项目肯定是会写的,先往后推迟一段时间。
写法一:
fun max(a: Int, b: Int): Int {
return if (a > b) a else b
}
max :函数名称
(a: Int, b: Int):参数列表
大括号前的 Int:表示返回类型
写法二:
fun max( a:Int, b:Int) :Int = if( a > b) a else b
之所以能写成写法二是因为 Kotlin 支持表达式函数体
如果函数体是由单个表达式构成,可以用这个表达式作为完整的函数体
并去掉花括号和 return 语句
可变变量(var):变量的值初始化之后可以改变
不可变变量(val):初始化变量之后不能再重新赋值
val testStr : String = " Hello Kotlin"
val testStr = " Hello Kotlin"
二者是一样的,因为编译器会分析初始化值并把它的类型作为这个变量的类型
写法一:$+变量名
fun main(args:Array){
val name = if( args.size > 0 ) args[0] else "Kotlin"
println("Hello , $name !")
}
写法二:$+{ 表达式 }
fun main(args:Array){
if( args.size > 0 ) println("Hello , ${args[0]} !") else println("Hello , Kotlin !")
}
写法三:$+{ 带有嵌套引号的表达式 }
fun main(args:Array){
println("Hello , ${ if(args.size > 0) args[0] else " Kotlin "}!")
}
class Person(val name:String, val age:Int)
val person = Person("Bob", 22)
println(person.name)
输出:Bob
一个简单的枚举类:
enum class Color {
RED, YELLOW, BLUE
}
使用:Color.BLUE
带属性的枚举类:
enum class Color(val r:Int, val g:Int, val b:Int,) {
RED(255,0,0), YELLOW(255,255,0), BLUE(0,0,255);
fun rgb() = (r * 256 + g) * 256 + b
}
使用:Color.BLUE.rgb()
when 结构,when 结构能够使用任意对象
一个简单的 when 结构
val num = 1
val letter = when(num){
1 -> "a"
2 -> "b"
else -> "c"
}
println(letter)
枚举和 when 结合
enum class Color {
RED, YELLOW, BLUE, VIOLET, ORANGE, GREEN, INDIGO
}
fun mix(c1:Color, c2:Color) = when(setOf(c1, c2)){
setOf(Color.RED, Color.YELLOW) -> Color.ORANGE
setOf(Color.YELLOW, Color.BLUE) -> Color.GREEN
setOf(Color.BLUE, Color.VIOLET) -> Color.INDIGO
}
迭代 for
迭代区间
for( i in 1..100){
println(i)
}
迭代下标
for (i in array.indices) {
print(array[i])
}
迭代 map
迭代键值
for( (key, value) in myMap){
println("$key = $value")
}
迭代下标
for(( index, element) in list.withIndex()){
println("$index: $element")
}
kotlin 中 异常处理和 Java 中相似,但是 Kotlin 中更能够将 try{}catch(){} 作为表达式
val number = try {
Integer.parseInt("100")
}catch (e:NumberFormatException){
null
}
println(number)
over!