赞
踩
包的定义必须在文件的第一行:
package com.morris.kotlin
import com.morris.demo.*
源文件的路径可以和包的路径不相同,也就说明包名只是一个逻辑名称,例如源码文件HelloKt.kt
所在目录为com.morris.kotlin
,但是其中的包声明可以为com.morris.kotlin2
。
Kotlin应用程序的入口点为main方法:
fun main() {
println("hello kotlin")
}
也可以携带参数:
fun main(args: Array<String>) {
println("hello kotlin")
}
fun sum(a: Int, b: Int): Int {
return a + b
}
可以省略返回值:
fun sum(a: Int, b: Int) {
a + b
}
还可以简写为一行:
fun sum(a: Int, b: Int) = a + b
如果函数没有返回值,返回类型可以使用Unit代替或者直接省略。
package com.morris.kotlin
val t = 1 // 全局常量
fun main() {
var i = 10 // 常量
val j = 20 // 局部变量
}
// 单行注释
/*
* 多行注释
*/
/*
* /* 注释嵌套 */
*/
var name = "morris"
print("my name is $name")
fun max(a: Int, b: Int): Int {
if(a > b) {
return a
} else {
return b
}
}
也可以简写如下:
fun max(a: Int, b: Int)= if(a > b) a else b
如果一个方法的返回值有可能返回null,那么必须显示的声明:
fun str2Int(str: String): Int? { return str.toIntOrNull() } fun sum(a: String, b:String): Unit { var intA = str2Int(a) var intB = str2Int(b) if(null == intA) { print("arg1 is not a number") return } if(null == intB) { print("arg2 is not a number") return } // 到这里kotlin编译器能自动推断出intA和intB不为null print(intA + intB) }
fun getStrLength(obj: Any): Int? {
if(obj !is String) return null
return obj.length
}
val items = listOf("apple", "banana", "kiwifruit")
for (item in items) {
println(item)
}
for(i in items.indices) {
println("item at $i is ${items[i]}")
}
val items = listOf("apple", "banana", "kiwifruit")
var i = 0
while(i < items.size) {
println("item at $i is ${items[i++]}")
}
fun choose(i: Int): Char =
when (i) {
1 -> 'A'
2 -> 'B'
3 -> 'C'
else -> 'G'
}
var x = 1
var y = 10
if(x in 1..y) {
println("$x is in 1..y")
}
for (i in 0..9 step 3) {
println(i)
}
for (x in 9 downTo 0 step 3) {
println(x)
}
val fruits = listOf("banana", "avocado", "apple", "kiwifruit")
fruits.filter { it.startsWith("a") }.sorted().map { it.toUpperCase() }.forEach { println(it) }
var str = String()
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。