kotlin 基本数据类型

学习任何一门语言都离不开数据类型,数据类型是一门开发语言最基础的语法,最基本的组成部分,kotlin的数据类型和java基本相同

数值类型

类 型 类 型 宽 度
Double 双精度浮点型 64
Float 浮点型 32
Long 长整型 64
Int 整形 32
Short 短整型 16
Byte 字节 8
    var a: Double = 2.0
    //F/f表示单精度浮点型
    var b: Float = 2F
    //L表示长整型
    var c: Long = 1L
    var d: Int = 1
    var e: Short = 1
    var f: Byte = 5

数字类型 常量下划线

  • 将数字进行分组,增加数字常量易读性
    val a = 1_000_000
    val b = 111_222_333_444_555L
    val c = 11111_11111_11L
    println("a => $a")  //输出 a => 1000000
    println("b => $b")  //输出 b => 111222333444555
    println("c => $c")  //输出 c => 111111111111    

装箱和拆箱

  • 装箱: 自动将基本数据类型转换为包装器类型

  • 拆箱:自动将包装器类型转换为基本数据类型

  • kotlin的原则是万物皆对象,所以并没有和java中一样的 int 和 Integer 这种数据类型和引用类型的分别,因此kotlin中只存在数字的装箱,并没有拆箱

        val value: Int = 110
        //装箱后数值无变化(Int? 只限数值类型)
        val box: Int? = value
        print("box=====$box") //输出结果为 110

数值比较

== 判断数值是否相等,=== 判断内存地址(数据类型数值范围)是否相等

        class test5() {
            val value: Int = 60
            val box: Int? = value

            init {
                var result: Boolean
                result = value == box
                println("result==$result") //输出结果为true
                result = value === box
                /*
                定义的变量是Int类型,大于127的内存地址不同,反之相同。这是`kotlin`的缓存策略导致的,
                而缓存的范围是“ -128 ~ 127 ”,输出结果为true,如果定义的变量是小于-128或者大于127的值,
                输出结果为false
                */
                print("result===$result")
            }
        }

显式转换

类 型 类 型 举例:var a: Int = 100 输出结果
字节型 toByte() a.toByte() 100
短整型 toShort() a.toShort() 100
整型 toInt() a.toInt() 100
长整型 toLong() a.toLong() 100
浮点型 toFloat() a.toFloat() 100.0
双精度浮点型 toDouble() a.toDouble() 100.0
字符型 toChar() a.toChar() d
字符串型 toString() a.toString() 100

隐式转换:算数运算被重载为适当的类型转换

        //Long + Int = Long
        val b = 10L + 20
        println(b)  //输出b 为30

位运算符

  • and 如果对应位都是1,则结果为1,否则为0
  • or 如果对应位都是0,则结果为0,否则为1
  • xor 如果对应位值相同,则结果为0,否则为1
  • inv 按位翻转操作数的每一位,即0变成1,1变成0
  • shl 按位左移指定的位数,相当于乘以2的N次方。移掉的省略,右边缺失的位,用0补齐
  • shr 按位右移指定的位数,相当于除以2的N次方,移掉的省略,左边缺失的位,如果是正数则补0,若为负数,可能补0或补1,这取决于所用的计算机系统
  • ushr 按位右移指定的位数,移掉的省略,左边缺失的位,用0补齐

详情参靠:https://zhuanlan.zhihu.com/p/26546977

布尔类型

  • Boolean 表示布尔类型,和Java相同有true和false两个值

  • 逻辑操作符

    • ' || ' => 逻辑或(或者)
    • ' && ' => 逻辑与(并且)
    • ' ! ' => 逻辑非(取反)
    class test8() {
            var value: Boolean = false
            var a: Boolean = false
            var b: Boolean = true
            var result = Boolean
            init {
            println("value==$value") //输出结果为 value==false

                //输出结果为  a && b
                if (a || !b) {
                    println("a==b")
                } 
                if (!a && b) {
                    print("a && b")
                }
            }
        }

字符型

  • Char:字符型,单引号(‘ ’)表示字符变量,需要显式转换为数字不饿能直接作为数字
        class test9() {
            var a: Char = 'a'
            init {
                println(a)
                var var1 = a.toByte()
                var var2 = a.toInt()
                var var3 = a.toString()
                var var4 = a.toFloat()
                var var5 = a.toShort()
                println("var1 = $var1 ,var2 = $var2 , var3 = $var3 , var4 = $var4 , var5 = $var5")
                //输出结果为  var1 = 97 ,var2 = 97 , var3 = a , var4 = 97.0 , var5 = 97
            }
        }

大小写转换

  • 大写转换:toUpperCase()
  • 小写转换:toLowerCase()
        class test9() {
            var a: Char = 'a'
            init {
                /*
                当字符变量为英文字母时,大小写的转换,部位英文是转换失败
                */
                // 转换为大写
                a = a.toUpperCase()
                println("$a----------")  //输出结果为 A----------
                // 转换为小写
                a = a.toLowerCase()
                println("$a++++++++++") //输出结果为 a++++++++++
            }
        }

转义符

类 型 转义符
制表符 \t
换行符 \n
退格键(Back建) \b
Enter键 \r
反斜杠 \
单引号 '
双引号 "
美元符 $

字符串类型

  • 在Kotlin中, 字符串字面量有两种类型:

    • 包含转义字符的字符串 转义包括(\t、\n等),不包含转义字符串的也同属此类型
    • 包含任意字符的字符串 由三重引号(""" .... """)表示
                class test11() {
                    val str: String = "kotlin"

                    init {
                        println("str => $str")
                        for (s in str) {
                            print(s)
                            print("\t")
                        }
        
                        val d = """ class test18(){
                            println("三重引号引用字符串,可以包含任意字符")
                            } """
                        println(d)  
                        /*输出结果为  
                        class test18(){
                            println("三重引号引用字符串,可以包含任意字符")
                            } 
                        */
                    }
                }

字符串模板

        class test11() {
            val str: String = "kotlin"

            init {
                println("str => $str")
                //迭代
                for (s in str) {
                    print(s)
                    print("\t")
                }

                val a: String = "哈哈哈"
                var b: String = "$a kotlin"
                var c: String = "$b ${a.substring(1, 3)} !!!!"
                println(a)  //输出结果 哈哈哈
                println(b)  //输出结果 哈哈哈 kotlin
                println(c)  //输出结果 哈哈哈 kotlin 哈哈 !!!!
            }
        }

数组

  • Array: Array表示数组

  • 创建数组函数

    • arrayOf()
    • arrayOfNulls()
    • Array() 工厂函数

1.arrayOf():创建数组的参数为一个可变的泛型对象

        var arr  = arrayOf(1,10,100,1000,10000) 
        for (v in arr){
            print(v)
                    print("\t")  //输出结果为  1	10	100	1000	10000	
        }

2.arrayOfNulls():创建指定类型指定元素数量 并且元素可以为空的数组

     class test12() {
         var arr = arrayOfNulls<Int>(3)
            init {
                 arr[0] = 1
                 arr[1] = 2
                 arr[2] = 3
                 for (a in arr) {
                 print(a)
                 print("\t")   //输出结果为  1	2	3
                }
            }
        }

3.Array()工厂函数:使用数组大小和返回给定其索引的每个数组元素的初始值的函数, 第一个参数表示数组元素的个数,第二个参数为使用其元素下标组成的表达式

        class test12() {
            //工厂函数
            var arr1 = Array(5) { index -> (index * 2).toString() }
            init {
              for (a in arr1){
                print(a)
                print("\t")  //输出结果为 0	2	4	6	8	
                 }

            }
        }
        

原始类型数组:Kotlin中不支持字符串类型的原始类型数组

类 型 转义符
字节型 ByteArray
短整型 ShortArray
整型 IntArray
长整型 LongArray
布尔型 BooleanArray
字符型 CharArray
浮点型 FloatArray
双精度浮点型 DoubleArray
        class test10(){
             var intArr: IntArray = intArrayOf(1,2,3,4,5)
             var charArr: CharArray = charArrayOf('a','1','b','c','3','d')
             var longArr: LongArray = longArrayOf(12L,1254L,123L,111L)
             var shortArr: ShortArray = shortArrayOf(10,11,12,13)
             var boolArr: BooleanArray = booleanArrayOf(false,true,true,false)
             init {
                 for (number in intArr){
                     print(number)
                     print("\t") //输出结果为  1	 2	3	4	5		
                }
                println()
                for (char in charArr){
                    print(char)
                    print("\t") //输出结果为 a	1	b	c	3	d	
                }
                println()
                for (long in longArr){
                    print(long)
                    print("\t") //输出结果为 12	 1254  123	111	
                }
                println()
                for (short in shortArr){
                    print(short)
                    print("\t") //输出结果为   10	11	12	13	
                }
                println()
                for (bool in boolArr){
                    print(bool)
                    print("\t") //输出结果为  false	 true	true	false	
                }
            }
        }

posted @ 2019-05-24 18:39  小小丶刘  阅读(432)  评论(0编辑  收藏  举报
//