- kotlin的简介
- kotlin基础
- 基本数据类型
- 运算符
- 数组
- kotlin中的控制流
1. kotlin的简介
随着Google I/0 2017的结束,Kotlin已经成为热搜。耐不住自己内心的寂寞,于是开始了Kotlin的“入坑之路”。Kotlin 是⼀门针对 JVM、Android、JavaScript 以及原⽣平台的开源(OSS)静态类型编程语⾔。它是由 JetBrains 开发的。该项⽬开始于 2010 年并且很早就已开源。Kotlin 既具有⾯向对象⼜具有函数式结构。
2.kotlin基础
AndroidStudio中kotlin的配置
在AS中的配置大家可以打开上面的链接,上面是kotlin官网中文翻译,包含了在各个平台的教程。刚开始了解kotlin,这次先记录下kotlin的基础知识。<1>基本数据类型(左图)和运算符(右图) ,
一看有点像java中的数据类型,看似相同,但也并不是完全一样,如java中的int可以隐式转换为long型,在kotlin中,较小类型不能隐式的转换为较大的类型,需要通过显示转换。因此提供为每个数据类型提供了如下的转换:
接下来看看代码就一目了然了,下面代码都是在androidstudio上呈现的。
编译器直接提示类型不匹配
正确转换如下:
val a: Byte = 1
val b: Int =a.toInt()
val与java中的final相似。kotlin中用val声明的 Element表示只读,而var表示既可读,又可写。换言之,前者只有getter();后者包含getter()和setter()。
字符串模板表达式
字符串可以用模板表达式,以下代码为例,输出s为 i=10。
val i = 10 //以"="后面的值决定数据类型,i为Int型
val s = "i = $i"
其中$后面也可以用花括号括起来的任意表达式,如下图:
val s = "123456789" //s为string类型
val l = "s.length is ${s.length}"
输出结果:
原生字符串,用三个引号(“”“)括起来,其内部没有转义,可以包含换行和任何其它字符:
val text = """
for (c in "foo")
print(c)
"""
trimMargin() 函数去除前导空格:
val text = """
|Tell me and I forget.
|Teach me and I remember.
|Involve me and I learn.
|(Benjamin Franklin)
""".trimMargin()
数组
数组在kotlin中用Array表示,它定义了get()和set()、size等属性。
//数组的创建,使用库函数arrayOf创建
var mArray = arrayOf(1,2,3)
//创建一个Array<String> ,初始化为[0,1,4,9,16]
val strArray=Array(5,{ i->(i*i).toString() })
Kotlin 表⽰原⽣类型数组: ByteArray 、ShortArray 、IntArray 等等
注意: 与 Java 不同的是,Kotlin 中数组是不型变的(invariant)。这意味着 Kotlin 不让我们把 Array 赋值给 Array ,以防⽌可能的运
⾏时失败
<2>kotlin中的控制流
if表达式
var value: Int =0
//传统方式
if (a>b) value=a
//和else搭配
if (a>b){
value=a
}
else{
value=b
}
//表达式
var m = if (a>b) a else b
在表达式的分支中可以是代码块,最后的表达式作为该块的值:
val max = if (a > b) {
print("Choose a")
a
} else {
print("Choose b")
b
}
When表达式
when取代了java中的switch操作符,这个更改可谓让人省心了不少 =_=
如何让人省心的,来瞧瞧~~~
when (x) {
1 -> print("x == 1")
2 -> print("x == 2")
else -> { // 注意这个块
print("x is neither 1 nor 2")
}
}
when将它的参数和每一个分支条件顺序比较,它既可以是表达式,又可以使语句,作为表达式时,符合分支条件的值为表达式的值;作为语句,则忽略个别分支。但when用作表示式时,必须要与else搭配使用。
注:分支条件可以是任意的表达式,而不仅仅限于常量
fun whenFunction(i: Any)= when(i){
rangeTest(i)-> println("rangeTest")
1 -> println("i is 1")
is string ->println("i is string")
"d"-> println("i is d")
in 2..10 -> println("i is in range")
else -> println("i is null")
}
上述代码中,满足某个分支条件时,该分支条件后面的输出值为该表达式的值。
在when不提供参数的情况,可以取代if —else ,if链,所有的分支条件都是最简单的布尔表达式。
for循环
for循环列举几种方式,其余的大家可以在上面给出的官网中文翻译中查看
//遍历一个List
for(item in List){
println(item)
}
//遍历一个数据的下标
for(i in array.indices){
println(array[i])
}
//下面括号内与java中(int i;i<=10;i++)相似
for(i in 1..10 ){
println("i=$i")
}
for(i int 1 until 10){
println("不包括10")
}
//每循环一次i=i+3,超出[1,10]区间则停止。
for(i in 1..10 step 3){
println("i=$i")
}
while循环就不在写了,和java,c++中的类似。
kotlin的基础在这先结束,文章中只是示例了两三个数据类型而已,由于名字和java类似,就不一一介绍,但要注意在声明和使用中与java是有所不同的。后面对与kotlin的类和对象的,接口的理解,将会结合Android项目来总结,这样会更通俗易懂。