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()
}
}
}
随时随地看视频