学习任何一门语言都离不开数据类型,数据类型是一门开发语言最基础的语法,最基本的组成部分,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 } } }