Kotlin基础知识

来源:互联网 发布:用vb编写简单小游戏 编辑:程序博客网 时间:2024/06/08 16:55

Java是Kotlin的子集,也就是说Kotlin是完全包含Java的。所以我们从Java来学习Kotlin是非常容易的,基于目前学习Kotlin的资料非常有限,所以今天写一篇文章简单的教大家使用一下Kotlin。


基础语法

1、定义包名、导包

当我们新建一个Kotlin文件时(文件以kt为后缀),我们首先需要声明包名和导包,使用的方式和Java一样,包名声明需要在第一行使用关键字package xxx,需要注意的是包名不需要和文件的路径一致,导入别的地方的类使用关键字import,如:

package com.xinxue.kotlindemoimport android.os.Bundleimport android.support.v7.app.AppCompatActivityimport android.widget.Toast

如果使用IDE来开发,这些工作不需要我们来完成。

2、定义变量、常量

定义变量使用关键字var,定义常量使用关键字val。Kotlin中都是先写变量名然后使用冒号来声明变量类型,如“var age:Int”,可以声明的时候直接赋值,如“var age:Int=20”.

val NAME: String = "Xiaoming"var info: String = "学Kotlin"var age: Int = 25

3、函数

kotlin中函数使用关键字fun,


4、注释

注释有两种写法“//”、“/* */”,这个与Java是一样的。


5、循环、条件

if

Kotlin中没有三元运算符(condition?a:b),因为if可以作为表达式来达到这个目的。if的常规用法和Java是一样的,可以接else,都是if可以作为一个表达式,可以这样使用:

var isAdult: Boolean = falsevar age:Int=25var result = if (age > 18) {    isAdult = true    isAdult} else {    isAdult = false    isAdult}

这里定义一个变量isAdult,判断age的年龄来判断是否成年,这里大括号中的isAdult作为if表达式的返回值(如果if表达式有大括号,那么最后一行的值就是该表达式的返回值),需要注意的是如果if作为表达式来使用,必须要有else一块使用。上面的写法也可以这样:

var isAdult: Boolean = falsevar result = if (age > 18) true else false


when

when表达式和if一样,可以作为表达式来使用或者作为条件判断,当作为表达式来使用时必须要有一个else分支,when的写法和Java中的是不一样的,它的条件满足后使用“->”来书写后面的,如果多个条件满足后执行同一个动作,可以使用分好来隔开,如下面的写法:

when (age) {    in 0..17, 18 -> isAdult = false    in 18..200 -> isAdult = true    else -> print("非已知人类")}var info = when (name) {    "小明" -> "小明你好"    else -> "你叫什么名字?"}

for

for循环可以通过任何迭代器来迭代,它的语法如下:

for(item in collection){ }

while do while

这些和Java中的使用方式一样,可以按照以前的方式使用。


6、字符串模板

这个是Kotlin中才有的特性,就是在字符串中插入常量或者变量的值,假如有一个变量s,在字符串中我们可以这样使用s的值"The s is $s",如果是插入函数,可以这样使用"${s.replace("is","was")}",即加大括号包裹。比起Java使用+号来拼接,写法更加简单。来个例子:

var name = "小明"var age: Int = 25var person = "$name is $age"


7、@标签 continue、return、break

@可以给表达式添加一个标识,和Java中给嵌套for循环取名字类似,continue和return、break与Java中是一样的,可以按照如下方式使用这些功能:

var a = arrayOf(1, 2, 3, 4)var b = Array<String>(3, { i -> "kk" + i })outer@ for (str in a) {    inner@ for (str in b) {        print(str)        if (str.equals("kk2")) break@outer    }}


8、基本数据类型

kotlin中各种基本数据类型占用的大小如下图所示:


其中每种类型都是一个对象,每种对象都含有一些方法用来转换为其它类型,需要注意的是基本类型也可以为空,如“Int?”表示可以为空的类型。还有一点需要注意的是char类型在Kotlin中不是Int类型的,所以不能直接给char类型赋值给int类型的变量。可以使用下面的方式来转换:

var char: Char = 'k'var numb: Int = 4//numb = char 这样是不允许的,必须要用下面的方式numb = char.toInt()//可为空的Int类型var nullableInt: Int? = null


上面说的基本类型都是对象,从下面的截图可以看出:


其中numb从上面的代码中可以看到是一个赋值4的整数。有一点需要提示,如果使用基本类型的成员函数来做运算是比直接使用运算符来运算效率要高的,因为Kotlin针对这些做过专门的优化。


位运算符

Kotlin中没有专门的位运算符,比如Java中的“<<”,但是其针对int和long类型的提供了一个叫做中缀形式的方法,如:

var bit = (1 shl 2) and 0x1111

下面是全部的位运算符:

 shl:有符号左移,相当于Java中 <<

shr:有符号右移,相当于Java中 >>

ushr:无符号右移,相当于Java中  >>>

and: 按位与

or:按位或

xor:按位异或

inv:按位翻转


Array

集合在Kotlin中是不变的,相当于Java中的数组,可以使用下面几种方式创建一个集合对象:

var a = arrayOf(1, 2, 3, 4)var nullA = arrayOfNulls<String>(4)var b = Array<String>(3, { i -> "kk" + i })

获取集合的值可以直接像使用Java数组一样,如a[1].


字符串

使用String来表示字符串,字符串可以用for循环来遍历,字符串可以用("") 来创建,但是不能包含分隔符,也就是反斜杠,可以包含别的特殊字符,如:

var bit = (1 shl 2) and 0x1111var ss = """    The bit is:$bit     """

这里使用了一个字符串模板,就是上面的$bit,也就是 引用了bit变量的值。



总结

上面简单的介绍了Kotlin的一些基础知识,有关于函数和类的知识我会在后面写一篇新的文章来详细的介绍。




欢迎关注我的微信公众号“android教科书”,最新最好的文章第一时间送到手!可以扫描下面的二维码来关注: