Kotlin的数据类型有:数字、字符、布尔值、数组和字符串。
1、数字
kotlin在数字处理上接近于java但是不是完全相同。他提供如下几种内置类型来表示数字:
Double、Float、Long、Int、Short、Byte(字符类型在Kotlin中不是数字)
1.1字面常量
数值常量有三种:十进制(123,Long类型要加L-123L,Float要加F或者f-123.4f),十六进制(
0x0f),二进制(0b00)。(注:暂不支持8进制)
浮点数在Kotlin中表示方法有:默认double(123.4),Float(123.9F)
1.2数字字面值中的下划线(为了便于读懂)
val oneMillion = 1_000_000
1.3同一性和相等性(装箱操作)
数字装箱不必保留同一性 (因为在Kotlin中数值其实也是对象,所以装箱操作只是将值赋值给了其他对象,所以
每个装箱后的值的地址都不是一样的)
val a:Int = 1000
print(a===a)//输出为true
val boxedA : Int?=a
val anotherBoxedA:Int?=a
print(boxed === anotherBoxedA)//输出false
但是可以保留相等性
val a:Int = 1000
print(a==a)//输出true
val boxed : Int? = a
val anotherBoxed : Int? = a;
print(boxed==anotherBoxed)//true
1.4显示转换
在kotlin中较小类型并不是较大类型的子类,即Int类型并不能隐式转换成Long类型,所以不存在
val a : Int?=1
val b : Long?=a
以上这段代码并不能编译通过
因此数值之间的转换要通过显式的方式来
-toByte():Byte
-toShort():Short
-toInt():Int
-toLong():Long
-toFloat():Float
-toDouble():Double
-toChar():Char
1.5运算
位运算符(只用于Int和Long)有:shl-有符号左移(java的<<),shr-有符号位右移(java>>),ushr-无符号右移
,and-位与,or-位或,xor-位异或,inv-位非
1.6浮点数比较
相等性检测:用==或者!=
比较操作符:<、>、<=、>=
区间检测:a..b、x in a..b、x !in a..b
1.7字符
字符用Char类型表示,他不能直接当作数字
//错误示例
fun check(c:Char){
if(c == 1){//错误:类型不兼容
}
}
//正确用法
fun decimalDigitValue(c:Char):Int{
if(c !in '0'..'9'){
}else{
return c.toInt() - '0'.toInt()
}
}