kotlin简单学习笔记

113 阅读4分钟

学习过Java,kotlin相对来说就比较简单。基本上就是Java的变形,我认为kotlin在操作和使用上都相对于Java来说比较方便。

如何运行kotlin代码

第一种方式就是在IntelliJ IDEA中运行。

第二种就是在线运行kotlin代码,在网址try.kotlinlang.org上面可以在线运行kotlin代码

最简单的kotlin代码

fun main() {
    println("Hello,world!")
}

变量

val 只可读不可写

var 可读可写

fun main(){
	val b=3
    println("b="+3)
}

最后输出的结果为

b=3

如果要声明变量类型,语法结构如下

val b:Int=3

注:kotlin数据类型和Java差不多,我认为只是首字母大写了,以下是kotlin的基本数据类型:

Int//整形
Long//长整型
Short//短整型
Float//单精度浮点型
Double//双精度浮点型
Boolean//布尔型
Char//字符型
Byte//字节型

以下代码因为val只可读不可写,所以用var

fun main(){
    var b:Int=3
    b=b*3
    println("b="+b)
}

结果为

b=9

函数

我觉得kotlin的函数特别简单,相对于Java来说,简化了许多的操作,下面是一个简单kotlin函数的写法

fun method(num1:Int,num2:Int):Int{
	return max(num1,num2)
}

以上代码还可以进行一个简化操作

fun method(num1:Int,num2:Int):Int=max(num1,num2)

还能进一步进行简化

fun method(num1:Int,num2:Int)=max(num1,num2)

if条件语句

下面将上面的函数进行改写,变成if语句

fun method(num1:Int,num2:Int):Int{
    var n=0
    if(num1>num2){
        n=num1
    }else{
        n=num2;
    }
    return n
}

这就是一个简单的if语句,如果你很细心,你会发现n=num2;后面出现了一个分号,我认为这说明kotlin语言也有一定的兼容性。

对于上面的代码我们还可以进行简化

fun method(num1:Int,num2:Int):Int{
    val n=if(num1>num2){
        num1
    }else{
        num2
    }
    return n
}

对此,你会发现n是一个多余的变量,所以可以进一步进行简化

fun method(num1:Int,num2:Int):Int=if(num1>num2){
        num1
    }else{
        num2
    }

这还不是最精简的代码,如果你想再精简的话,你也可以用一行代码来写出这个函数

fun method(num1:Int,num2:Int):Int=if(num1>num2) num1 else num2

when条件语句

通过上面简化的步骤,你应该学会了简化的一些读法,下面我们来学习when条件语句,我们继续创建一个方法

fun method(name:String)=when(name){
    "cxk"->100
    "dz"->90
    else->60
}

当函数获得一个name时,如果是cxk,返回值为100;如果是dz,返回值为90;其他就是返回60

如果不在when中传递参数,则写法如下

fun method(name:String)=when{
    name=="cxk"->100
    name=="dz"->90
    else->60
}

如果是以cxk开头的人,如cxkrap可以用.startsWith("cxk")来匹配,只要以cxk开头就是90

fun method(name:String)=when{
    name.startsWith("cxk)->100
    name=="dz"->90
    else->60
}

when语句还能进行类型匹配

fun method(num:Number)=when(num){
	is Int->println("is Int")
    else ->println("error")
}

循环语句

kotlin中的for循环

首先用kotlin写一个区间

val range=0..5

这表示为【0,5】,当你了解了区间,我们就可以用for-in来遍历这个区间

fun main(){
    for(i in 0..5){
        println(i)
    }
}

可以用until来表示一个左开右闭的区间

val range=0 until 5

表示的是【0,5)

如果你想跳过其中的元素,可以用step,如下

fun main(){
    for(i in 0 until 6 step 2){
        println(i)
    }
}

相当于for-i结构中的i=i+2,所以结果为

0
2
4

前两个创建的都是升序区间,如果想创建降序,可用downTo

    for(i in 5 downTo 1){
        println(i)
    }

上面创建了一个【5,1】降序区间

面向对象编程

kotlin和许多高级语言一样,也是面向对象的

首先我们先创建一个类

class Person{
    var name=" "
    var age=0
    fun eat(){
        println(name+"is eating. He is" +age+"years old.")
    }
}

类建立好了,现在将类实例化(与Java类似,只是没有new关键词)

val p=Person()

现在我们在main()函数对p对象进行一系列操作

fun main(){
    val p=Person()
    p.name="cxk"
    p.age=18
    p.eat()
}

继承和构造函数

calss Student{
    var sno=""
    var grade=0
}

kotlin中任何一个非抽类都是无法被继承的,如果想要上面的Person类被继承。在类前面加个open

open class Person{...}

kotlin继承相当于Java,把extend变为了冒号:

class Student:Person(){
    var sno=""
    var grade=0
}

在kotlin函数中有主构造函数和次构造函数

kotlin提供了一个init结构体,所有主构造函数的逻辑都可以写在里面

class Student(val son: String,val grade:Int):Preson(){
    inti{
        println(son)
        println(grade)
    }
}

次构造函数在主构造函数之内,下面是一个简单的例子

class Student(val sno:String,val grade:Int,name:String,age:Int):Person(name,age){
    constructor(name:String,age:Int):this.("",0,name,age){}
    constructor():this("",0){}
}

次构造函数是通过constructor关键字来定义的

接口

kotlin的接口和Java基本上是一致的,具体实例如下

interface Study{
    fun readBook()
    fun doHomework()
}
class Student(name:String,age:Int):Person(name,age),Study{
    override fun readBooks(){
        println(name+"is reading")
    }
    override fun doHomework(){
        println(name+"is doing homework)
    }
}

在main函数中可以用下面代码调用两个接口中的函数

fun main(){
    val student=Student("cxk",18)
    doStudy(student)
}
fun student(study:Study){
    study.readBooks()
    study.doHomework()
}