首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Kotlin基本语法

一、常用类型

基本类型

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的过程中所遇到的问题。

  • 发表于:
  • 原文链接http://kuaibao.qq.com/s/20180204G087MB00?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券