概述
Kotlin 的基本数值类型包括 Byte、Short、Int、Long、Float、Double 等等;这里要注意,字符不属于数值类型,是一个独立的数据类型;
val intNum = 1000 // Int
val intNum1 = 0b11 // Int 二进制类型,值为 3
val intNum2 = 0xFF // Int 十六进制类型,值为 255
val longNum = 1000002L // Long
val doubleNum = 135.2 // Double
val floatNum = 111.2f // Float
Kotlin 中对于装箱的类型数据,比如说 Int 数据,如果超过128的话,比较两个数的值使用 == ,如果要比较对象地址值的话就是用 === ;同时,对象比较时,我们经常会重写 equals() 方法,在这里, == 和 equals() 可以理解为是相等的。
fun test(){
val x : Int = 150
println(x === x)
val X: Int? = x
val XX: Int? = x
println(X === XX)
println(X == XX)
}
打印结果为
true
false
true
我们定义对象时,比如定义一个常量 Int 的值,可以有以下方式
fun test1(){
var i = 5
var x : Int = 5
var y: Int? = null
y = 5
var z: Int?
z = 5
println("$i $x $y $z")
}
这四种写法都行,第一种是用了类型推导;第二种是明确定义了类型;第三种是初始值为null,延迟赋值;第四种是第三种的简写;在这里要注意,下面有个反例 var j = null ,这样写编译器没报错,但是下一步没法写了,比如说想给 j 赋值 Int 或 String 类型,由于一开始没有指定类型就置空,所以编译器也不知道它是什么类型,无法推导,然后就没然后了,切记,这是个反例。
Java 中对于数据类型,可以直接转换,比如说 byte a = 78;int b = a; 但在 Kotlin 中这种写法是违规的,转换时会报错,怎么办?基本数据类型对应的有 toByte() 、toInt()、toLong()、toString() 等方法可以使用,Kotlin 中也支持数据相加时,小类型自动转换为大类型
// Java
byte a = 78;
int b = a;
// Kotlin
val a: Byte = 1
val b: Int = a // 错误
val c: Int = a.toInt() // 正确
val z = 1000L + 3 // Long + Int 结果z是 Long 类型
Kotlin 中的位操作符与Java的也有点不太一样,看下面对比
Kotlin Java
shl – << 左移位
shr – >> 右移位
and – & 与
or – | 或
xor – ^ 异或
以上就是常用的操作符,记熟就行。
Java 中的 char 类型数据,直接定义即可 char i = 3; 但在 Kotlin 中不能这样,需要 var j : Char = '3' ;比如说用 char 减去 int 的数字,在Java中可以直接相减,会得到想要的值;但 Kotlin 中则不行,需要先转换为Int类型
// Java:
private void testChar(){
char i = '3';
int j = 1;
System.out.println(i - j); // 值为 50
}
// Kotlin;
fun test2() {
val i: Char = '3'
val j: Int = 1
println(i - j) // 值为 2,错误
println(i.toInt() - j) // 值为 50,正确
}
kotlin 中的逻辑判断符 || 、&& 、 ! 这三个和 java 中都一样,用法也一样,这里就不多说了。
关于数组,有两种写法,一种是用 arrayOf() ,另一种是用工厂方式;对于 Int 类型的,还可以使用特定的数组
fun test3() {
val a = arrayOf(1, 2, 3) //[1,2,3]
val b = Array(3) { i -> (i * 2) } //[0,2,4]
val c = intArrayOf(1, 2, 3) //[1,2,3]
}
Kotlin 中的字符串,也有一些特殊的技能,比如说字符串换行,java中的 String s = "abc def ghj"; 字符窗s,如果从空格中换行,中间会用+号链接起来;kotlin 中则是支持用 """ 来包裹字符串,换行用 | 来标识,结尾追加 trimMargin() 方法
Java:
String s = "abc def ghj";
String s = "abc " +
" def " +
" ghj";
Kotlin:
val s = """ abc def ghj """
val s = """ abc
|def
|ghj """.trimMargin()
Kotlin 中的比较符也比较个性,比着java多了种用法,可以直接把if语句中返回的值赋给初始化的值
fun test4() {
val a = 1
val b = 2
var x : Int = a
if (a < b) {
x = b
}
var y: Int
if (a > b) {
y = a
} else {
y = b
}
val z = if (a > b) {
a
} else {
b
}
println("$x $y $z ")
}
in 这个关键字,在for循环中使用过,同时也可以用在if判断语句中,比如
fun test5() {
val i = 5
if(i in 1..9){
println("$i is in 1-9")
} else {
println("$i is not in 1-9")
}
}
打印出来的值是 5 is in 1-9 ,说明 i 是在 1-9 的范围内。同时,还有个 when 的关键字,类似于 java 中的 switch 关键字,
fun test6() {
val i = 5
when (i) {
1 -> print("i == 1")
2 -> print("i == 2")
in 6..9 -> print("i 在6和9的中间")
else -> {
print("i 不是 1 ,也不是 2")
}
}
}
这里可以强调一点,如果 i 的类型是位置的,类似java中的 Object,在koltion中叫做 Any,这时候,when 的判断类型就多了n中变化,比如
fun test7() {
val i: Any = 5
when (i) {
1 -> print("i == 1")
2 -> print("i == 2")
is String -> print("i is String")
in 6..9 -> print("i 在6和9的中间")
else -> {
print("i 不是 1 ,也不是 2")
}
}
}
今天基本东西就是这些了,这些都是需要熟记的。
最后
以上就是有魅力舞蹈为你收集整理的Kotlin 基本数据类型及运算符的全部内容,希望文章能够帮你解决Kotlin 基本数据类型及运算符所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复