kotlin 基本數據類型

學習任何一門語言都離不開數據類型,數據類型是一門開發語言最基礎的語法,最基本的組成部分,kotlin的數據類型和java基本相同
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兩個值
  • 邏輯操做符code

    • ' || ' => 邏輯或(或者)
    • ' && ' => 邏輯與(而且)
    • ' ! ' => 邏輯非(取反)
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 表示數組
  • 建立數組函數blog

    • 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   
                }
            }
        }
相關文章
相關標籤/搜索