Table of Contents:
  1. 基本数据类型
    1. Number
      1. 整数类型
      2. 小数类型
    2. Boolean
      1. Char
        1. String
          1. Array
          2. 类型检测

            kotlin学习-数据类型

            Reading Time:The full text has 657 words, estimated reading time: 4 minutes
            Creation Date:2022-08-22
            Article Tags:
             
            BEGIN

            官方文档地址 🔗

            基本数据类型

            Number

            1. 数字中间可以用_拼接增加可读性,如:123_000、123_000.000_123
            2. 使用类型+?标记数据可为空,当为可空时,每次赋值都是一个新的引用地址,此时使用===返回false,但是在JVM环境下,会对-128至127的数字做内存优化===时会返回true
            val a = 10000
            val a0 = a
            val a1 = a
            val a2: Int? = a
            val a3: Int? = a
            println(a0 == a1)  // true
            println(a0 === a1) // true
            println(a2 == a3)  // true
            println(a2 === a3) // false
            1. 提供方法toByte、toShort、toInt、toLong、toFloat、toDouble用于类型转换

            整数类型

            类型Size (bits)最小值最大值
            Byte8-128127
            Short16-3276832767
            Int32-2,147,483,648 (-231)2,147,483,647 (231 - 1)
            Long64-9,223,372,036,854,775,808 (-263)9,223,372,036,854,775,807 (263 - 1)

            explicit: 明确的

            infer: 推断

            exceed: 超过、超出

            如果未指定类型,编译器会自动推断为Int或者Long(值超出Int范围)

            Long类型可以在数字末尾加L指定,如:1L

            小数类型

            发现问题:println(123456.123F)打印出来是123456.125,感觉尽量不要用Float类型

            类型Size(bits)Significant bitsExponent bitsDecimal digits
            Float322486-7
            Double64531115-16

            如果未指定类型,编译器会自动推断为Double

            Float类型可以在数字末尾加F或f指定,如:1F

            Boolean

            boolean类型与其它语言类似,赋值:val a: True = true,并提供||&&!用于操作布尔数据

            Char

            字符类型使用单引号(')包裹,可以为单个字符、转译字符、unicode字符

            特殊字符转译规则如下:

            字符含义
            \ttab
            \bbackspace
            \n换行
            \r回车
            单引号
            双引号
            \反斜杠
            $$符号

            String

            字符串使用双引号(")包裹,字符串分为转译字符串和原始字符串

            1. 转译字符串(一个双引号包裹):即会标识转译字符的字符串,如:val s = "Hello, world!\n"
            2. 原始字符串(三个双引号包裹): 可使用trimMargin方法去处首尾空格, 与Python有点类似

            可使用模版语法,与ES6的模版语法类似,可以是$var${var}

            Array

            数组的使用与Python的list没啥区别,区别比较大的是如何创建数组

            通过构造函数的有Array、arrayOfNulls、IntArray、ByteArray、ShortArray、FloatArray、DoubleArray,示例:val a = Array(5) { it * 2 } // 0 2 4 6 8,其中it表示数组下标

            通过创建方法的有arrayOf、intArrayOf、byteArrayOf、shortArrayOf、floatArrayOf、doubleArrayOf,示例:val a = arrayOf(0, 2, 4, 6, 8) // 0 2 4 6 8

            使用:

            val a = Array(5) { it * 2 }
            
            a[0] = 10
            a.get(0)
            a.set(0, 10)

            类型检测

            使用is!is检测类型,如:x is Stringy !is String

            配合when使用:

            when (x) {
                is Int -> print(x + 1)
                is String -> print(x.length + 1)
                is IntArray -> print(x.sum())
            }

            使用as转换类型,如:val x: String = y as Stringval x: String? = y as? String,使用as?时当转换失败返回null

            FINISH

            Random Articles
            Life Countdown
            default