Kotlin学习之路(一)

xiaoxiao2021-02-28  86

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项目来总结,这样会更通俗易懂。

转载请注明原文地址: https://www.6miu.com/read-48359.html

最新回复(0)