Kotlin学习笔记1——变量、函数

Kotlin学习笔记1

(学习教材为《第一行代码(第三版)》by郭霖)

1、Kotlin概述

​ Java虚拟机不关心class文件的编译来源,即只要是符合规格的class文件,Java虚拟机都可以识别,故而kotlin语言的原理就是将kotlin代码编译成class文件,随后再由Java虚拟机执行class文件。

​ 相较于Java,kotlin语法更加简洁,有时候实现同样的功能kotlin所需的代码量会少很多;同时,kotlin的语法更加高级,大大提升开发效率;并且kotlin对于语言的安全性也有了更高的提升。并且,kotlin和Java是100%兼容的,可以直接调用java代码、使用Java开源库等等。

2、Kotlin中的变量

​ kotlin中声明变量的两个关键字:var和val。其中,var是可后期改变的变量(variable);val是在随后不可随意改变的变量(value),对应java中的final变量。

2.1 基本数据类型

​ kotlin拥有类型推导机制,例如如下代码:

fun main(){
    val a=10
    println("a="+a)
}

​ 此时kotlin会自动推导出a是整形变量。如果给a赋值为“Kotlin”这个字符串的话,那么a就会被推导为字符串变量。

​ 若想要主动对变量进行类型声明,只需要在变量后加上关键字即可,例如:

val a:Int = 10

​ 注意:kotlin中的变量类型与java不同的是类型的首字母应该大写,例如Int、Long、Float、Double等,这是由于kotlin中的基本数据类型都是使用了对象数据类型,在kotlin中的Int是一个类,而在java中int只是一个关键字。

​ var变量则是可以被改变被重新赋值的变量。在上面的代码中,a变量为val变量,一旦被赋值便无法改变,如果想要吧a变量的数值扩大10倍,则必须将a由val变量改为var,如下:

fun main(){
    var a:Int = 10
    a = a*10
    print(a)
}

​ 此时运行代码可以得到正确的信息,否则,若是使用val变量则会报错”Val cannot be reassigned“,即val无法被重新赋值。

2.2 设置val变量的作用

​ val变量在Java中对应的是final关键字修饰的变量。而在java中,final关键字往往被程序编写者忽略,例如对于我来说,常常就只是定义一个简单的基本数据类型(例如int),随后就进行下面代码的编写,但是这样往往会发生之前定义的变量在某一处被修改的情况,而这并不是编写者的本意,而在大型项目、多人项目中这种情况更为常见。故而在kotlin中直接规定不可随意更改的变量必须用val定义。

3、kotlin中的函数

​ 在kotlin中,定义函数的关键词是fun,即function,语法规则如下:

fun methodName(param1:Int,param2:Int):Int{
    return 0
}

fun是定义函数的关键字,在kotlin中,无论是什么类型的函数都需要使用fun声明;methodName是函数名;括号内是函数需要传入的参数。并且制定了传入参数的基本数据类型;括号后代表返回值的基本数据类型,若是不需要返回值则可以不写;花括号包裹起来的部分就是函数的主体部分,包含了函数内的主要代码。

*kotlin语法简化

​ 当函数中只有一行代码时,可以不用编写花括号内的函数体,而是直接将唯一的那一行代码跟在定义函数的尾部,例如一个简单的函数:

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

这个函数可以直接简化为:

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

由于返回值是int类型,所以可以直接省略函数声明时的Int,用等号来连接max的结果。

4、kotlin中的程序逻辑控制

4.1 条件语句

4.1.1 if语句

​ 在kotlin中,if语句与java中的语句几乎类似,没有什么太大区别。将上述larger函数中调用的max函数进行展开就如下:

fun larger(num1:Int,num2:Int):Int{
    var value = 0
    if(num1>num2){
        value = num1
    }else{
        value = num2
    }
    return value
}

而与java中的if不同的地方在于,kotlin中的if语句其实是有返回值的,返回值就是if语句每个条件中的最后一行代码的返回值。简化后代码如下:

fun larger(num1:Int,num2:Int):Int{
    var value = if(num1>num2){
        value = num1
    }else{
        value = num2
    }
    return value
}

结合上面的kotlin语法糖,这段代码还可以再次精简,精简有多种不同的形式,但核心思想还是上述的语法糖的内容,甚至可以精简成只有一行的代码:

fun larger(num1:Int,num2:Int) = if(num1>num2) num1 else num2
4.1.2 when条件

​ when条件有些类似switch语句,可以对不同的条件进行判断,并且不强制需要使用break关键字。使用例如下:

fun getScore(name:String) = when(name){
    "Joey" -> 98
    "Tian" -> 90
    "Jegret" -> 90
    "Kai" -> 93
    else -> 0
}

使用方式同switch-case语句很相似,when语句的格式是匹配值 -> {执行逻辑},同时,when语句还可以进行类型匹配。例如:

fun check(num:Number){
    when(num){
        is Int -> print("Number is Int")
        is Double -> print("Number is Duble")
        else -> print("Not support")
    }
}

代码中的is关键字就是类型匹配的关键字,类似于Java中的instanceof关键字。Number类是各个基本数字类型的父类。

4.2 循环语句

4.2.1 while循环

​ kotlin中的while循环与java的使用方法一致,不多加赘述

4.2.2 for循环

​ 在Java中,for循环是for-i循环,而在kotlin中,for循环是for-in循环,用法如:

fun main(){
    for(i in 0..10){
        print(i)
    }
}

这段代码就实现了打印从0-10的每个数字。其中,”…“是创建两端闭区间关键字,在…的两边指定区间的左右端点就可以创建一个闭区间。

​ 而until关键字生成的是一个左闭右开的区间,这样的好处是,一般长度为10的数组下标区间是0-9,所以这个时候就不需要我们取到10的值,故而只要将[0-10]区间改为[0-10)即可。如果想要实现跳步读取(打印)只需要添加step关键字即可,这样就可以跳过指定长度的一些元素。

fun main(){
    for(i in 0 until 10 step 2){
        print(i)
    }
}

这段代码打印出的结果就是0 2 4 6 8,相当于for-i循环中的i=i+2的效果。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Neymessi_JR

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值