fun main() { println("HelloWorld") }
变量
var name1 = "ZhaoTian" // 普通变量 自动推导类型 var name2: String = "ZhangTian" val name3 = "ChenTian" // 常量 类似java中的 final 修饰的变量 val age: Int = 33 // kotlin 中是对象数据类型,其他有 Short Long Float Double Boolean Char Byte
类型推导机制
Kotlin完全拋弃了Java中的 基本数据类型,全部使用了对象数据类型
函数
1. 普通函数
fun methodName(param1: Int, param2: Int): Int { return max(param1, param2) }
2. 当函数体只有一行时可以简写为等号形式
fun methodName2(param1: Int, param2: Int): Int = max(param1, param2)
3. 函数的参数默认值
fun printParams(num: Int, str: String = "hello") { println("num is $num , str is $str") }
当调用 printParams()函数时,可以选择给第二个参数传值,也可以选择不传,在不传的情况下就会 自动使用默认值
这个例子比较理想化,因为正好是给最后—个参数设定了默认值,现在我们将代码改 成给第—个参数设定默认值
fun printParams(num: Int = 100, str: String) { println("num is $num , str is $str") }
Kotlin提供了另外—种神奇的机制,就是可以通过键值对的方式来传参,从而不 必像传统写法那样按照参数定义的顺序来传参
printParams(str = "hello") printParams(str = "world", num = 123)
此时哪个参数在前哪个参数在后都无所谓,Kotlin可以准确地将参数匹配上
if条件语句
Kotlin中的if语句相比于Java有—个额外的功能,它是可以有返回值的,返回值就是if语句每 —个条件中最后—行代码的返回值
fun ifMethod1(param1: Int, param2: Int): Int { val value = if (param1 > param2) { param1 } else { param2 } return value }
// 返回值类型自动推导 fun ifMethod2(param1: Int, param2: Int) = if (param1 > param2) param1 else param2
when条件语句
when语句有点类似于Java中的switch语句,但它又远 比switch语句强大得多
匹配值 -> { 执行逻辑 }
当你的执行逻辑只有—行代码时,{ }可以省略
/** * 条件语句 when * 类似 java 中的 switch */ fun whenMethod1(name: String): Int { return when (name) { "Tom" -> 86 "Jim" -> 83 "Lily" -> 67 else -> 0 } }
when语句还有—种不带参数的用法,能发挥很强的扩展性
fun whenMethod2(name: String): Int { return when { name.startsWith("Tom") -> 86 name == "Jim" -> 83 // == 等效于 java中的equals() name == "Lily" -> 67 else -> 0 } }
when语句允许进行类型匹配
is关键字就是类型匹配的核心,它相当于Java中的instanceof关键字
fun checkNumber(number: Number) { when (number) { is Short -> println("is short") is Int -> println("is int") is Long -> println("is Long") is Double -> println("is double") else -> println("other type") } }
循环语句
1. for循环
fun forMethod1() { val range = 0..10 // 0<=x<=10 [1,10] for (i in range) { print(i) } val range2 = 0 until 10 // [0,10) for (i in range2) { print(i) } val range3 = 1..20 step 2 // 1,3,5...19 for (i in range3) print(i) val range4 = 5 downTo 1 // [5,1] for (i in range4) print(i) }
2. while循环
同java的while用法一致
数组
fun main() { val arrayInt: Array<Int> = arrayOf(1, 2, 3) val arrayObj: Array<Any> = arrayOf(1, "hello", 1.23, true) printArray(arrayObj) val array1 = arrayOfNulls<Int>(10) for (i in 0..9) array1[i] = i * 8 printArray(array1) val array2 = Array<String>(5) { i -> (i * 10).toString() } printArray(array2) val array3 = IntArray(5) val array4 = IntArray(5) { 100 } printArray(array4) val array5 = IntArray(5) { it * it } printArray(array5) } fun printArray(array: Any) { when (array) { is Array<*> -> { array.forEach { print("$it ") } println() for (index in array.indices) print("${array[index]} ") println() for (value in array) print("$value ") println() for ((index, value) in array.withIndex()) print("$index -> $value ") println() } is IntArray -> { array.forEach { print(it) } println() } } }
點擊查看更多內(nèi)容
為 TA 點贊
評論
評論
共同學(xué)習(xí),寫下你的評論
評論加載中...
作者其他優(yōu)質(zhì)文章
正在加載中
感謝您的支持,我會繼續(xù)努力的~
掃碼打賞,你說多少就多少
贊賞金額會直接到老師賬戶
支付方式
打開微信掃一掃,即可進(jìn)行掃碼打賞哦