kotlin知识梳理-变量与函数

前言:17年的时候第一次接触了kotlin,中途断断续续地用着。今年来到新公司,刚好项目中有大量的kotlin代码,虽然对kotlin的用法有一定了解,但是要在组内进行分享,所以想借此机会对kotlin的知识点进行整理,加深印象,方便后续查看。

一、基本类型

1、整数
  kotlin中共提供了四种整数类型,分别为Byte、Short、Int和Long。

类型 大小 最小值 最大值
Byte 8 -128 127
Short 16 -32768 32767
Int 32 -2,147,483,648 2,147,483,647
Long 64 -9,223,372,036,854,775,808 9,223,372,036,854,775,807

  定义变量时,如果初始化值没有超过Int类型的最大值,则会自动推断为Int型。如果超过则推断为Long型,如果要显式定义为Long型,则在末尾加上“L”即可。

2、浮点数
  kotlin中的浮点数由Float和Double两种类型组成。

类型 大小 有效数字比特数 指数比特数 十进制位数
Float 32 24 8 6-7
Double 64 53 11 15-16

  当给一个变量设置初始化值为小数时,默认是Double类型,如果要使它为Float类型,则需要在末尾加上“f”或“F”后缀。

3、显式转换
  在kotlin中是不支持较小的类型不能隐式转换为较大的类型。

var a: Int = 2
var b: Long = a  //这样会报错
var b: Long = a.toLong()  //这样写才正确,必须用显式转换

每个数字类型支持如下的转换:
toByte(): Byte
toShort(): Short
toInt(): Int
toLong(): Long
toFloat(): Float
toDouble(): Double
toChar(): Char

4、字符串
  kotlin中字符串用String类型表示,与java一样字符串是不可变的。我们可以用索引运算符来访问:s[i],也可以用for循环对其进行遍历。

for (c in str) {
    println(c)
}

  平时我们可以用“+”操作符来连接字符串与其他类型值,但是要求表达式的第一个元素是字符串,否则就会报错。

var str =  1 + "打印"  //报错
var str = "打印" + 1  //正确

  当然除了上面这种方法外,kotlin还支持字符串模板,即字符串字面值可以包含模板表达式 ,会求值并把结果合并到字符串中。 模板表达式以美元符($)开头。

var a: Int = 2
var str = "打印a = $a"  / /输出结果:“打印a = 2”
或
var str = "打印a = ${a + a}"  / /输出结果:“打印a = 4//用“{}”花括号括起来的表达式

如果想输出一个原始字符串,即保留字符串原来格式的,用三个引号(""")括起来

 var str = """
        我是一个粉刷匠
        粉刷能力强
    """
 print(str)  //输出结果:我是一个粉刷匠
                       粉刷能力强

二、变量

val : 定义只读局部变量,只能进行一次赋值

val a: Int = 3 //直接赋值,不赋值会报错val a = 3 //赋值后可省略类型,不赋值会报错

总结:首次定义必须赋值
           参数类型可以省略
           后续无法再次赋值

var :可多次赋值变量

var a: Int = 1 //必须赋值,参数类型可省略
a = 5 //可多次赋值

总结:首次定义必须赋值
           参数类型可以省略
           后续可以再次赋值

三、函数

(1)函数定义方式

 fun sum(a: Int, b: Int, c: Int): Int {
       return a + b + c
 } //带返回值的

 fun sum(a: Int, b: Int, c: Int): Unit {
       print(a + b + c)
 } //不带返回值的,Unit 是一种只有一个值——Unit 的类型,这个值不需要显式返回,可以省略

(2)带默认参数的函数
  在kotlin中可以在定义函数时,设置默认参数,即给参数赋一个默认值,后续调用方法时如果没有传这个参数的值,那么这个参数的值还是原来设置的默认值。

//例如
fun sum(a: Int, b: Int = 6, c: Int): Int {
       return a + b + c
 } 

fun main(args: Array<String>) {
       print(sum(2, c = 4)) //输出结果:12,即 2+6+4
}

注意点:当一个函数调用混用位置参数与命名参数时,所有位置参数都要放在第一个命名参数之前。这里所说的位置参数指的就是可以直接给值的类似上面的a,命名参数是”参数名=值“形式,类似c。举个栗子:print(sum(2, c = 4))这样写是ok的,2是a的值,b不赋值用默认值,c赋值4。如果是print(sum(2, b = 3, 4)),这样写就报错了,效果如下
kotlin知识梳理-变量与函数_第1张图片
错误信息:不允许混合名称和位置参数。也就是说它不能识别你这个4是传给谁的,如果改为print(sum(2, b = 3, c = 4))就不会有问题了。

(3)单表达式函数
  如果函数只返回一个表达式,可以省略花括号”{ }“,直接”=“后返回。

//例如
fun sum(a: Int): Int = a + 1

(4)可变数量的参数
  可变数量参数定义方式是在参数定义前面加上***“vararg”***即可。在kotlin中使用可变数量参数不像java一样,需要将可变数量参数作为方法里参数列表的最后一个参数,可以放在任意位置。

   fun method(vararg args: Int){
        for (it in args){
            println("打印:$it")
        }
    }

    fun main(args: Array<String>) {
        method(1,2,3,4,5)  //打印结果为:打印:1 打印:2 打印:3 打印:4 打印:5
    }

如果该函数不止一个可变数量参数,还有其他参数并且在可变数量参数以后的,就要用命名参数了。

   fun method(vararg args: Int, a: Int){
        for (it in args){
            println("打印:$it")
        }
    }

    fun main(args: Array<String>) {
        method(1,2,3,4,5,a = 6)  //这里的参数a传参时,必须用“参数名 = 值”方式传递
    }

总结:以上主要介绍了kotlin中数据基本类型、变量定义和函数定义的一些内容,为了避免篇幅过长,后面的内容将分几篇文章来发布。

你可能感兴趣的:(Android,Kotlin)