彻底掌握Android Kotlin系列(二) | Kotlin基本数据类型与数据运算

Kotlin基本数据类型与数据运算:

  • 基本数值类型
  • 浮点类型
  • 字符类型
  • 字符串类型
  • 类型强制转换
  • 数字运算

ecfdc4a76cfa8069ff749e9e92d317c.jpg

一、 基本数据类型:

Kotlin 的基本数值类型包括 Byte、Short、Int、Long、Float、Double 等。不同于 Java 的是,字符不属于数值类型,是一个独立的数据类型。

类型 位宽 最小值 最大值
Byte 8 -128 127
short 16 -32768 -32767
Int 32 -2,147,483,648 (-2^31) 2,147 ,483,647 (2^31 – 1)
Long 64 -9,223,372,036,854,775,808 (-2^63) 9,223,372,036,854,775,807 (2^63- 1)

1.整数类型:

val number =             100 //默认是 Int类型
val bigNumber =          8000000000 //超过Int最大值是 Long类型
val longNumber =         20L //数字后面显示加L,表示声明 Long类型
val byteNumber:Byte = 1
复制代码

image.png
ps:所有未超出Int最大值的整型值初始化的变量都默认为Int类型,如果初始值超过了其最大值,那么推断为Long类型。在数字值后面显式添加L表示一个Long类型

2.Float、Double类型:

Kotlin中提供了Float和Double两种类型来分别表示单精度和双精度的浮点数类型。

类型 位宽
Float 32
Double 24
val doubleNumber = 31415928888 //默认是Double类型 
val floatNumber = 31415928888f//尾部加f或F显式表示这是一个Float类型的浮点数
复制代码

image.png
ps:Kotlin对于小数的默认推断是Double类型。如果需要显式将一个小数指定为Float类型需要在数值尾部加入f或F。由于Float类型十进制位数是6位,所以上述例子中floatNumber 实际值大小为31415926,后面就会出现进度丢失舍弃。
在Kotlin 中还有一点与Java不同的是,Kotlin中数字不存在隐式的拓宽转换。比如一个函数参数为Double的函数只能接收Double类型,不能接收Float、Int或者其他数字类型

image.png

3.字符类型:

kotlin中字符用Char 类型表示,字符的值需要用单引号括起
image.png

4.布尔类型:

在Kotlin使用Boolean表示布尔类型,它只有两个值true和false。注意可空类型Boolean?类型会存在装箱操作。

val isVisible: Boolean = false
val isVisible = false //自动推断为布尔Boolean类型 
复制代码

5.字符串类型:

在Kotlin中字符串用String类型表示。字符串是不可变的。字符串的元素–字符可以使用索引运算符访问:s[i]。可以用for环选代字符串:

val str:"今天周六"
for(char in str){
    println(char)
}
复制代码

5.字符串模板:

字符串字面值可以包含模板表达式,即一些小段代码,会求值并把结果合并到字符串中。模板表达式以美元符($)开头,由一个简单的名字构成

val number = 100000
println("The Result is $number")
复制代码

或者用花括号${括起来的任意表达式

val text ="This is Text"
println("Text length is ${text.length}")
复制代码

字符串与转义字符串内部都支持模板。如果你需要在原始字符串中表示字面值$字符(它不支持反斜杠转义),你可以用下列语法:

val price ="${'$'}9.99"
复制代码

和Java一样,Kotlin可以用+操作符连接字符串。这也适用干连接字符串与其他类型的值。

6.字符串的值:

Kotlin有两种类型的字符串字面:转义字符串可以有转义字符,以及原始字符串可以包含换行以及任意文本。以下是转义字符串的一个示例:

vals="Hello, world!\n" // \n换行 
val s2="{\"key\":\"value"}"//\反斜杠对""进行转义,保留字符串格式
复制代码

字符串使用三个引号()分界符括起来,内部没有转义并且可以包含换行以及任何其他字符

val text = """
for (c in "foo")
print(c)
复制代码

还可以通过trimMargin()函数去除前导空格:

val text = """
|Tell me and I forget..
|Teach me and I remember.
|{"key1":"valuel"}
|{"key2":"value2"}
""".trimMargin()
复制代码

7.类型强制转换:

在Kotlin中与Java不同是通过调用toInttoDoubletoFloat之类函数来实现数字类型的强制转换的。

类型 强制转换
Byte toByte()
Short toShort()
Int tolnt()
Long toLong0)
Float toFloat()
Double toDouble()
Char toChar)
val number =100 //声明一个整形number对象 
number.tostring() 
number.toByte()
number.toShort()
number.toLong()
number.toFloat()
number.toDouble()
 ~~~
复制代码

二、 数字运算:

a.四则运算

除法/:

val number = 3 / 2
println(number) //输出1

val floatNumber = 3 / 2.toDouble() 
println(number) //输出1.5
复制代码

乘法*:

val number = 3 * 2
println(number) //输出6
复制代码

加法+:

val number = 3 + 2
println(number) //输出5
复制代码

减法一:

val number = 3 - 2
println(number) //输出1
复制代码

取余 % :

val number = 3 % 2
println(number) //输出1
复制代码
b.位运算

Kotlin中的位运算和Java不同的是没有用特殊符号来表示,可以采用了中缀函数方式调用具名函数。

  • shl(bits)-有符号左移【shl是ShiftLogicalLeft的缩写】
  • shr(bits)-有符号右移
  • ushr(bits)-无符号右移
  • and(bits)-位与
  • or(bits)-位或
  • inv()-位非
  • xor(bits)-位异或
val vip= true
val admin= false

val result =vip and(admin)=false
val result=8 ushr(2)=2

复制代码
© 版权声明
THE END
喜欢就支持一下吧
点赞0 分享