一、常用类型
基本类型
val 用来定义常量;var 用来定义变量;
常量和变量在使用之前都要进行初始化。
vala =10
varb =20
b =30
valc: Int
c=10
类型转换
对与Kotlin中的基本数据类型:Int Double FLoat Boolean 等类型是无法直接进行类型转换的(使用as关键字)。而需要使用这些类型的toXXX方法。
而且这些个“基本类型”也不会进行隐式的转换(显式都不行)
vartypeA: Int =10_000_000
vartypeB: Float =10.0f
typeA=typeB.toInt()
值比较
“===”比较的是两个变量的地址;“==”比较的则是equals方法。在下方的代码中只会输出一个“equals”。
valeqA = EqualsTest(10)
valeqB = EqualsTest(10)
if(eqA === eqB) {
println("address equals")
}
if(eqA == eqB) {
println("equals")
}
字符串
字符串模版
valstrA ="this is a typeA"+ typeA
valstrB ="this is a${typeA} ${eqA.a} ${1+2+4}"
在Kotlin中有两种连接字符串和其它变量的方式,第一种是传统的通过进行连接。另一种方式则被称作字符串模版。
我们可以直接在某个字符串字面量的内部,使用${ }符号,将某个表达式插入其中。
多行字符串
往常,我们写多行字符串的时候,往往需要手动的添加换行符,甚至为了增强可读性,将每一行的字符串都单独放在一行上,然后在通过加号联系到一起。
而在Kotlin中则提供了一种更加便捷的方式:
valstrC ="""
this is a multi
line string
""".trimMargin()
在每一行的字符串首部是一个“|”符号,它的作用是配合后面的trimMargin函数将每一行字符串首部的空格去除掉,时输出的多行字符串更加的美观、整洁。
数组
在Kotlin中数组依旧不是一个像Java、C中的那种基本类型,也是一个类。
数组的两种创建方式:
valarrayA = Array(10){
i: Int->
return@Arrayi +1
}
valarrayB =arrayOf(10,30,20,30)
Kotlin中的数组一旦初始化完成之后,就没有办法再扩充数组的容量。
数组元素的访问方式和传统的数组一样,通过下标进行访问。例如arrayA[0]
集合类
在Kotlin中,总体来说,有两大类别的集合类。一种是和前面的数组一样,一旦初始化后就不能重新扩容的集合;另一种则没有这种限制。
//普通集合类
vallistA =listOf(10,230,20)
//可扩容的集合类 "MutableXXXX"
vallistB =mutableListOf(10,103)
下方的listB便可以调用其add方法往该集合中添加新的元素。
然后,在稍微提下HashMap。它存储的是一个个键值对,在Kotlin中这些键值对都是一个个Pair对象。而这里有一种更加简单、直观的方式生成Pair对象:xxx to xxx
valmapA =hashMapOf(1to"one",2to"two")
数组和集合类的遍历主要有两种方式:
通过for循环或while循环进行遍历
使用这些类的forEach方法进行遍历
mapA.forEach{t, u->
println("$t:$u")
}
listA.forEach{i: Int->
println(i)
}
二、流程控制语句
if else 语句
Kotlin中的if else语句没啥新的内容,和传统的写法一样:
if ( ) {
} else if ( ) {
} else ( ) {
}
for语句
Kotlin中的for语句只有一种形式,对应着Java中的“foreach”写法
for(i in 1..10){
}
其中接在“in”关键字后面的,可以是一个范围表达式,或者是一个实现了Iterable接口的类。
while语句
写法也和传统的写法一样。
while(){
}
当想要跳出多重循环的时候,可以在希望跳出的那层循环添加一个标签“名字@”,然后使用“break@名字”即可跳出那一层循环。
label@while(true){
while(true){
while(true){
break@label
}
}
}
三、表达式
if else 表达式
在Kotlin中是没有三元表达式这种语法的,需要使用 if else 表达式进行替代。
valeB=true
valeA=if(eB)10else20
当你要把 if 语句当作表达式来使用时,一定要加上 else 。因为表达式是必须得返回一个值的,对于这一类分支语句,就需要考虑到所有的可能情况。
when 表达式
前面讲流程控制语句的时候,没有提到switch语句,这是因为Kotlin中压根就没有这么一个语句。而是使用when语句来进行替代
when(eA){
10->{
}
20->{
}
}
当when作为表达式使用时,也同样需要加上 else;
valwA=when(eA){
10->{
}
20->{
}
else->{
}
}
when语句还有一种更加特殊的用法,去掉when后面的小括号中的内容:
valwB=when{
eAin1..20-> {
}
eAin21..30->{
}
else->{
}
}
valbasic:Basic=BasicA()
valwC =when{
basicisBasicA->{
}
basicisBasicB->{
}
else->{
}
}
此时 “->”前面填写的是一个布尔表达式,可以进行更加丰富的判断,相当于if else表达式的一种更加简便的写法。
范围表达式
通过范围表达式能够生成某个范围的值,并可以对这个区间中的值进行遍历。
包含首尾
for(iin'a'..'z'){
}
不包含尾数
for(iin1until10){
}
倒序区间,包含首尾
for(iin10downTo1){
}
设置跨步
for(iin(10downTo1).step(2)){
}
好的,这篇文章的内容大致就是这些,下篇文章将会讲解Kotlin中的面向对象编程的部分。喜欢的话,可以加入下方的知识星球,向咱询问在学习Kotlin的过程中所遇到的问题。
领取专属 10元无门槛券
私享最新 技术干货