本人喜歡學習一門語言,在有一定了解之後,從他們的簡單demo開始,一邊學習,一邊敲代碼。每個人都有適合自己的一套學習方法,取其精華,去其糟粕。
相關鏈接
在線學習
Kotlin 官方文檔
中文站(更新到 1.1):https://www.kotlincn.net/
網址(更新到 1.0.3):http://tanfujun.com/kotlin-web-site-cn/
Kotlin 中文論壇:https://www.kotliner.cn/
《Kotlin for android developers》中文版翻譯
語言學習網址:RUNOOB備註:裏面的虛擬機模擬適合小demo調試,程序太大還是建議到AS中。
1、使用條件表達式if
/**
* 比較a、b的較大值
* if (a > b)是一個表達式,返回一個值,然後賦值給max函數返回值
*/
fun main(args: Array<String>) {
println(max(args[0].toInt(), args[1].toInt()))
}
fun max(a: Int, b: Int) = if (a > b) a else b
2、空檢查(?)
/**
* 將引用顯示標記爲可爲空,才能取到null的值
*/
package multiplier
// 如果str不包含數字,返回null
fun parseInt(str: String): Int? {
try {
return str.toInt()
} catch (e: NumberFormatException) {
println("One of the arguments isn't Int")
}
return null
}
fun main(args: Array<String>) {
if (args.size < 2) {
println("No number supplied");
} else {
val x = parseInt(args[0])
val y = parseInt(args[1])
// We cannot say 'x * y' now because they may hold nulls
if (x != null && y != null) {
print(x * y) // Now we can
} else {
println("One of the arguments is null")
}
}
}
3、is 運算符
/**
* is運算符檢查是否是實例
* 如果是不可變的局部變量或屬性,則可不用使用is
*/
fun main(args: Array<String>) {
println(getStringLength("aaa"))
println(getStringLength(1))
}
fun getStringLength(obj: Any): Int? {
if (obj is String)
return obj.length // 不需要強制轉換爲String
return null
}
4、while
/**
* `while` and `do..while` 與java的差不多
*/
fun main(args: Array<String>) {
var i = 0
while (i < args.size)
println(args[i++])
}
5、for循環
/**
* for循環提供迭代器所有的內容
*/
fun main(args: Array<String>) {
for (arg in args)
println(arg)
// or
println()
for (i in args.indices)
println(args[i])
}
6、範圍判斷語句
/**
* 判斷數字在範圍內
* 判斷數字是否超出範圍
*判斷集合是否包含對象
* See http://kotlinlang.org/docs/reference/ranges.html#ranges
*/
fun main(args: Array<String>) {
val x = args[0].toInt()
//數字是否在範圍內
val y = 10
if (x in 1..y - 1)
println("OK")
//迭代範圍
for (a in 1..5)
print("${a} ")
//數字是否超出範圍
println()
val array = arrayListOf<String>()
array.add("aaa")
array.add("bbb")
array.add("ccc")
if (x !in 0..array.size - 1)
println("Out: array has only ${array.size} elements. x = ${x}")
//數組是否包含對象
if ("aaa" in array) // collection.contains(obj)被調用
println("Yes: array contains aaa")
if ("ddd" in array) // collection.contains(obj) 被調用
println("Yes: array contains ddd")
else
println("No: array doesn't contains ddd")
}
7、when
/**
* when子式可以是常量、變量、返回數值的表達式、
* 返回Boolean值的表達式,強大到用來替換if...else if
*/
fun main(args: Array<String>) {
cases("Hello")
cases(1)
cases(0L)
cases(MyClass())
cases("hello")
}
fun cases(obj: Any) {
when (obj) {
1 -> println("One")
"Hello" -> println("Greeting")
is Long -> println("Long")
!is String -> println("Not a string")
else -> println("Unknown")
}
}
class MyClass() {
}