与java定义包名一样,在源文件的开头定义包名:
package my.demoimport java.util.*// ...包名和文件夹路径可以不一致:源文件可以放在项目的任意位置。
与Java定义函数的区别在于:Kotlin在定义函数的时候要加个fun
关键词,函数的返回值前后不同,Java的在前面,如
而Kotlin的话,要在后面写返回值,如
private getResult(a: Int, b: Int): Int { return a + b }如果一个函数只有一个并且是表达式函数体并且是返回类型自动推断的话,可以直接这样写
fun getResult(a: Int, b: Int) = a + b // 这里的函数没有写返回值,以为Kotlin会自动判断返回值类型如果函数返回一个无意义的值,相当于Java的void
,则可以这样写
Uint 的返回类型可以省略
fun getResult(a: Int, b: Int) { print(a + b) }Kotlin声明变量与Java声明变量有些不一样,Java变量类型在前,变量名在后,而Kotlin则相反,变量名在前,变量类型在后,中间加:(冒号),并且Kotlin可以自动判断变量的类型。
声明常量(常量使用val
关键字)
声明变量(变量使用var
关键字)
Kotlin的注释与Java一样, 支持单行注释和块注释。
// 单行注释/* 这是一个 块注释 */使用${变量},如变量为args: Array<String>"
,使用的时候可以这样写
而不用再去用加号加起来,gradle里面也是支持的
fun main(args: Array<String>) { if (args.size == 0) return print("First argument: " + args[0])}使用if
表达式的时候这样写
前面说过,如果一个函数只有一个并且是表达式函数体并且是返回类型自动推断的话,可以直接这样写
fun getResult(a: Int, b: Int) = a + b那么加上if
表达式的话,可以这样写
当一个变量、函数可能出现空值的时候,应该指出该引用可空,如
fun getResult(a: Int, b: Int): Int? { // 设置函数返回类型可空 print(a + b) return null }is
运算符是检查一个表达式是否是某个类型的实例,如果为不可变局部变量或属性进行类型检查,则无需显式转换
或者
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
循环(Using a for loop)与Java相比,Kotlin使用for
循环要更加的简洁
或者这样写
for (i in args.indices) { print(args[i])}while
循环(Using a while loop)while
循环与Java一样
when
表达式(Using when expression)when
表达式就相当于Java的switch
表达式,省去了case
和break
,并且支持各种类型。
使用in运算符检查数字是否在范围内
if (x in 1..y-1) { //1..y-1表示1到y-1的范围 print("OK")}使用!in运算符检查数值是否在范围外
if (x !in 0..array.lastIndex) { print("Out")}循环输出一个集合里面的值或者判断集合里面是否包含某个变量
for (name in names) { // 将会调用nemes.contains(name)方法 println(name)}使用lambda表达式过滤和映射集合
// it表示namenames .filter { it.startsWith("A") } .sortedBy { it } .map { it.toUpperCase() } .forEach { print(it) }基本语法就学到这里。
新闻热点
疑难解答