本人喜欢学习一门语言,在有一定了解之后,从他们的简单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() {
}