學習任何一門語言都離不開數據類型,數據類型是一門開發語言最基礎的語法,最基本的組成部分,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
詳情參靠:https://zhuanlan.zhihu.com/p/26546977學習
邏輯操做符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") } } }
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 } }
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中, 字符串字面量有兩種類型:對象
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 哈哈 !!!! } }
建立數組函數blog
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 } } }
類 型 | 轉義符 |
---|---|
字節型 | 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 } } }