Kotlin 是一种在 Java 虚拟机上运行的静态类型编程语言,被称之为 Android 世界的Swift,由 JetBrains 设计开发并开源。
Kotlin 可以编译成Java字节码,也可以编译成 JavaScript,方便在没有 JVM 的设备上运行。
在Google I/O 2017中,Google 宣布 Kotlin 成为 Android 官方开发语言。
下面我们来看 kotlin的语法
1定义常量 变量
kotlin 中 代码结束不需要用 ; 结尾
<标识符> var <变量名 > : <类型 > = <初始化值>
例如
var text : String ="kotlin"
<标识符> val <变量名 >: <类型> = <初始化值>
val num : Int = 1;
var 和val 的区别 就是 val只能赋值 一次 和Java 中 的 final 用法一样
class KolinTest {
val a: Int = 1
var str : String ="string"
//你还可以这样写
//不需要特意的去指定类型 系统自动推断变量类型为Int
val b = 1
fun main(args: Array<String>) {
val c: Int // 如果不在声明时初始化则必须提供变量类型
c = 1 // 明确赋值
var d = 5
d += 1 // 变量可修改
val x = 1
// x = 2 报错 是编译不过得 val 只能赋值一次
}
}
2函数定义
函数定义使用关键字 fun
格式为: fun <方法名>( 参数 : 类型) : 返回类型 如 Int(无返回类型 用 unit 关键字进行标识 类似Java 中的 volid )
示例: fun test( v: Int) : Int { 方法体 }
可变长函数 用 vararg 关键字进行标识 例如
格式: fun <方法名>(vararg 参数 : 类型) : 返回类型
示例 : fun test(vararg v:Int){ for(vt in v){print(vt) } ) // 输出12345 }
test(1,2,3,4,5) // 输出12345
class KolinTest {
fun main(args: Array<String>) {
var d=test(1,3);// d=4
vars(1,2,3)// 输出 123
}
//标准写法
fun test(a: Int, b: Int): Int {
return a + b; //返回 a+b
}
//表达式作为函数体,返回类型自动推断
fun sum(a: Int, b: Int) = a + b
// 注意: 若 用 public 修饰 又返回值 必须写上返回类型
public fun sum(a: Int, b: Int): Int = a + b
//无返回值 Unit 也可以省略不写 fun test () 对于public方法也是这样
fun test () : Unit {
}
// 可变长 函数
fun vars(vararg v:Int){
for(vt in v){
print(vt)
}
}
}
3 null 检测机制
Kotlin的空安全设计对于声明可为空的参数,在使用时要进行空判断处理,有两种处理方式,字段后加!!像Java一样抛出空异常,另一种字段后加?可不做处理返回值为 null或配合?:做空判断处理 和Java中的三元表达式相似
var <变量名> :<类型> ?= <初始化值> 默认值
例如: var str:String ?=null 表示的是 str 是String 默认值为 null
class KolinTest {
companion object {
//类型后面加?表示可为空 如果后面不加? 则表示不可以为空 必须要有初始化的值
//初始化值不可为 null 如 var text: String = null 是错误的 正确写法 var text: String ? = null
var num: String? = "123"
// 抛出异常 !! 和java 中 的 关键字 throws
var page = num!!.toInt();
var num2: String? = null
//num2 为null 则 page2=-1 如不为null 则 page2=num2.toInt()
val page2 = num2?.toInt() ?: -1// 输出结果 page2=-1
/** 我是main入口函数 **/
@JvmStatic
fun main(args: Array<String>) {
print(page)
println()
print("page2=" + page2)
println()
val x = parseInt(null)
val y = parseInt("1")
// 直接使用 `x * y` 会导致错误, 因为它们可能为 null.
if (x != null && y != null) {
// 在进行过 null 值检查之后, x 和 y 的类型会被自动转换为非 null 变量
print(x * y)
} else {
print("x 或 y 的值 其中一个为null")
}
}
fun parseInt(str: String?): Int? {
return str?.toInt()
}
}
// 输出 结果
// 123
// page2=-1
// x 或 y 的值 其中一个为null
}
网友评论