目录
2.字面常量
3.比较两个数字大小
4.类型转换
5.位操作符
6.字符
7.布尔
1.Kotlin的基本数据类型
Byte、Short、Int、Long、Float、Double
不同于Java,字符不属于数值类型,是一个独立的数据类型。
2.字面常量
<1>十进制:123
<2>长整型:123L
<3>16进制以0x开头:0x0F
<4>2进制以0b开头:0b00001011
<5>注:不支持8进制
<6>Double写法:123.5,123.5e10
<7>Floats使用f或F后缀:123.5f
3.比较两个数字大小
Kotlin中没有基础数据类型,只有封装的数据类型,你每定义一个变量,其实Kotlin就帮你封装了一个对象。这样可以保证不会出现空指针。数字类型也一样,所以在比较两个数字的时候,就有比较数据大小和比较两个对象是否相同的区别。在Kotlin中,三个等号===表示比较对象地址,两个等号==表示比较两个值大小。
val a:Int = 10000
Log.i("aaaaaa",(a===a).toString())//true,值相等,对象地址相等
//经过装箱,创建了两个不同的对象
val boxedA:Int? = a
val boxedB:Int? = a
Log.i("aaaaaa",(boxedA===boxedB).toString())//false,值相等,但对象地址不同
Log.i("aaaaaa",(boxedA==boxedB).toString())//true,值相等
4.类型转换
由于不同的表示方式,较小类型并不是较大类型的子类型,较小的类型不能隐式转换为较大的类型。这意味着在不进行显式转换的额情况下我们不能把Byte型值赋给一个Int变量。
val b:Byte = 1//ok,字面值式静态检测的 val i:Int = b//错误
我们可以代用其toInt()方法
val b:Byte = 1//ok,字面值式静态检测的 val i:Int = b.toInt()//ok
每种数据类型都有下面的这些方法,可以转化为其它的类型:
toByte():Byte
toShort():Short
toInt():Int
toLong():Long
toFloat():Float
toDouble():Double
toChar():Char
有些情况下也是可以使用自动类型转化的,前提是可以根据上下文环境推断出正确的数据类型而且数学操作符会做相应的重载。
val l = 1L + 3//Long + Int => Long
5.位操作符
对于Int和Long类型,还有一系列的位操作符可以使用,分别是
shl(bits) - 左移位(Java's <<)
shr(bits) - 右移位(Java's >>)
ushr(bits) - 无符号右移位(Java's >>)
and(bits) - 与
or(bits) - 或
xor(bits) - 异或
inv() - 反向
示例
val a = 5
val b = a shl 2
Log.i("aaaaaa",b.toString())
输出20
6.字符
字符均使用单引号,如:'1','a'
Kotlin中字符不能和数字直接操作
c == 1 //错误写法
我们可以显示地把字符转为Int数字
val c:Char = '1' c.toInt() == 1 // true
当需要可空引用时,字符、数字会被装箱。装箱不会保留同一性。



