Kotlin - 开始 - 1 基础语法
2017-06-09 15:45
232 查看
定义包
在源文件的顶部指定包:package my.demo import java.util.* // ...
目录和包不需要匹配,源文件可以放在文件系统中的任何地方。
定义函数
接受两个Int参数并返回
Int类型的函数:
fun sum(a: Int, b: Int): Int { return a + b }
用表达式作为函数体,返回类型可推断:
fun sum(a: Int, b: Int) = a + b
返回无意义的值:
fun printSum(a: Int, b: Int): Unit { println("sum of $a and $b is ${a + b}") }
Unit类型的返回值可以省略:
fun printSum(a: Int, b: Int) { println("sum of $a and $b is ${a + b}") }
定义局部变量
一次赋值(只读)局部变量:val a: Int = 1 // 立即赋值 val b = 2 // Int 类型可推断 val c: Int // 没有提供初始值则需要指定类型 c = 3 // 延迟赋值
可变变量:
var x = 5 // Int 类型可推断 x += 1
注释
如同Java和Javascript,Kotlin支持行内注释和块注释:// 这是行内注释 /* 这是一个注释块 包含多行 */
与Java不同,Kotlin中块注释可以嵌套。
使用字符串模板
var a = 1 // 在模板中使用简单名称: val s1 = "a is $a" a = 2 // 在模板中使用任意表达式: val s2 = "${s1.replace("is", "was")}, but now is $a"
使用条件表达式
fun maxOf(a: Int, b: Int): Int { if (a > b) { return a } else { return b } }
把
if当作表达式使用:
fun maxOf(a: Int, b: Int) = if (a > b) a else b
使用可空(Nullable)进行null检查
一个引用必须显式标明可空,才能接受null值。如果
str中不包含数字,就返回null值:
fun parseInt(str: String): Int? { // ... }
使用返回可空值的函数:
fun printProduct(arg1: String, arg2: String) { val x = parseInt(arg1) val y = parseInt(arg2) // 使用 x * y 可能引发错误,因为它们可能为null if (x != null && y != null) { // 在null检查之后,x、y 自动转换为非空 println(x * y) } else { println("either '$arg1' or '$arg2' is not a number") } }
或
// ... if (x == null) { println("Wrong number format in arg1: '${arg1}'") return } if (y == null) { println("Wrong number format in arg2: '${arg2}'") return } // 在null检查之后,x、y 自动转换为非空 println(x * y)
使用类型检查和自动转换
运算符is用来检查一个表达式是否是某个类型的实例。如果一个只读局部变量或属性被检查为某个特定类型,则无需再对其进行显式转换:
fun getStringLength(obj: Any): Int? { if (obj is String) { // 在此分支中 obj 自动转换为 String 类型 return obj.length } // 在包含类型检查的分支之外,obj 仍是 Any 类型 return null }
或
fun getStringLength(obj: Any): Int? { if (obj !is String) return null // 在此分支中 obj 自动转换为 String 类型 return obj.length }
甚至这样
fun getStringLength(obj: Any): Int? { // 在运算符 && 的右边,obj 自动转换为 String 类型 if (obj is String && obj.length > 0) { return obj.length } return null }
使用for
循环
val items = listOf("apple", "banana", "kiwi") for (item in items) { println(item) }
或
val items = listOf("apple", "banana", "kiwi") for (index in items.indices) { println("item at $index is ${items[index]}") }
使用while
循环
val items = listOf("apple", "banana", "kiwi") var index = 0 while (index < items.size) { println("item at $index is ${items[index]}") index++ }
使用when
表达式
fun describe(obj: Any): String = when (obj) { 1 -> "One" "Hello" -> "Greeting" is Long -> "Long" !is String -> "Not a string" else -> "Unknown" }
使用范围(Range)
使用in运算符检查数字是否在某个范围内:
val x = 10 val y = 9 if (x in 1..y+1) { println("fits in range") }
检查数字是否不在某个范围内:
val list = listOf("a", "b", "c") if (-1 !in 0..list.lastIndex) { println("-1 is out of range") } if (list.size !in list.indices) { println("list size is out of valid list indices range too") }
在范围上迭代:
for (x in 1..5) { print(x) }
还可以指定步长:
for (x in 1..10 step 2) { print(x) } for (x in 9 downTo 0 step 3) { print(x) }
使用集合
在集合上迭代:for (item in items) { println(item) }
使用
in检查集合是否包含某个对象:
when { "orange" in items -> println("juicy") "apple" in items -> println("apple is fine too") }
使用lambda表达式过滤map集合:
fruits .filter { it.startsWith("a") } .sortedBy { it } .map { it.toUpperCase() } .forEach { println(it) }
相关文章推荐
- kotlin基础语法
- Kotlin语法(基础)
- kotlin 官方学习教程之基础语法
- Kotlin 基础语法详细介绍
- Android 谷歌官方Kotlin语言入门教程(一)基础语法
- Python连载系列之Python语法基础1:开始使用Python
- Kotlin基础教程-基础语法
- Kotlin(一)语法基础
- php 与java语法关键字比较 献给有java基础有开始接触php的同学
- Kotlin 基础语法(一)
- Kotlin基础语法学习笔记
- Kotlin(二)-->基础语法
- Kotlin(二)-->基础语法
- Kotlin 基础语法学习
- Kotlin(二)-->基础语法
- 从0开始 2. JAVA基础语法(MyEclipse引入,注释,标识符命名规则及Java中的关键字)
- Kotlin基础语法-属性(Property)与域(Field)
- Kotlin(二)-->基础语法
- kotlin 官方学习教程之基础语法详解
- Kotlin 基础语法