
 写在前面:
 如果文章对你有帮助,记得点赞关注加收藏一波,利于以后需要的时候复习,多谢支持!
【Kotlin语言学习】系列文章
第一章 《认识Kotlin》
 第二章 《数据类型》
文章目录
- 【Kotlin语言学习】系列文章
- 一、基本数据类型
- (一)整数类型
- (二)浮点类型
- (三)字符类型
- (四)布尔类型
 
- 二、字符串
- (一)字符串定义
- (二)字符串模板
- (三)字符串拼接
- (四)字符串转义
 
- 三、类型强制转换
- 四、数学运算
- (一)常见运算
- (二)位运算
 
一、基本数据类型
(一)整数类型
在 Kotlin 中,整数类型表示整数值。Kotlin 提供了多个整数类型,以便根据需求选择合适的类型。
| 类型 | 关键字 | 位宽 | 最小值 | 最大值 | 
|---|---|---|---|---|
| 字节型 | Byte | 8 | -128 | 127 | 
| 短整型 | Short | 16 | -32768 | 32767 | 
| 整型 | Int | 32 | -2^31 | 2^31-1 | 
| 长整型 | Long | 64 | -2^63 | 2^63-1 | 
在计算机当中,最小的数据存储单位就是位(Bit),而所有数字在储存的时候,都是二进制储存,而二进制中,8位称之为1个字节(Byte),位宽则是数据占用的位的总数。可以看到,不同的数据类型就占用了不同的位宽。
 下面是对各种整数类型的变量声明示例。
val number = 100 // 默认是Int类型
val bigNumber = 8000000000 // 超过Int最大值,默认为Long类型
val longNumber = 20L // 在赋值数字后面增加后缀L声明Long类型
val byteNumber:Byte = 1 //在变量后用冒号声明Byte类型,再进行赋值
值得注意的是,所有未超过Int最大值的整型值初始化的变量都默认为Int类型,如果初始值超过了其最大值,那么将推断为Long类型。
(二)浮点类型
在 Kotlin 中,浮点类型表示带有小数部分的数字。Kotlin 提供了两种浮点类型:Float 和 Double。
| 类型 | 关键字 | 位宽 | 
|---|---|---|
| 浮点型 | Float | 32 | 
| 双精度浮点型 | Double | 64 | 
下面是对两种浮点数类型的变量声明示例。
val defaultDouble = 3.14 // 输入小数默认为Double类型
val doubleNumber = 3.1415926535 // 小数位超过6位也默认是Double类型
val floatNumber = 3.1415926535f // 在赋值数字后面增加后缀f声明Float类型
Kotlin对于小数的默认推断是Double类型。如果需要显式地将一个小数指定为Float类型,则需要在数值尾部加入f或者F的字母后缀。由于Float类型十进位数是6位,所以上述示例中floatNumber实际值大小为3.1415927,后面就会出现进度丢失舍弃。
(三)字符类型
在 Kotlin 中,字符类型表示单个字符。Kotlin 使用 Char 类型来表示字符。Char 类型是一个 16 位的无符号整数,可表示 Unicode 字符。
要声明一个字符变量,可以使用 char 或者 Char 关键字,并使用单引号''将字符括起来。
val letter: Char = 'A'// 用单引号括起来的单个字符
(四)布尔类型
在 Kotlin 中,布尔类型用于表示逻辑值。Kotlin 提供了一个 Boolean 类型,只有两个可能的取值:true 和 false。
val isVisible0:Boolean = false// 布尔值中的假,返回0
val isVisible1:Boolean = true// 布尔值中的真,返回1
二、字符串
在 Kotlin 中,String 被视为引用类型,并且不属于基本数据类型。然而,由于 Kotlin 对于基本数据类型提供了很多方便的语法和操作符,使得它们在使用上更接近于原始类型。在 Kotlin 中,这些基本数据类型具有与引用类型类似的行为,并且享受了编译器对它们的多态优化。
String 类型是不可变的,也就是说,一旦创建了一个字符串对象,就不能对其进行修改。如果需要修改字符串,可以使用字符串的一些方法和操作符来创建新的字符串对象。
(一)字符串定义
要声明一个字符串变量,可以使用 String 关键字,并使用双引号""将字符串括起来。
val str:String = "1234567890"
由于字符串String被视为引用类型,就可以通过[]引用来访问字符串中具体的某个字符。
val str:String = "1234567890"
val strNumber2:Char = str[1]// 元素计数从0开始,1即代表第二个
println("strNumber2:"+strNumber2)
通过println可以打印出strNumber2的结果。返回结果如下。
strNumber2:2
由此可以确定,通过访问具体的元素,可以从字符串中单独取出并输出。
(二)字符串模板
字符串字面值可以包含模板表达式,即一些小段代码,会求值并把结果合并到字符串中。模板表达式以美元符$开头,有一个简单的名字构成。
val number = 100
println("The result is $number")
返回结果如下。
The result is 100
不仅是简单的变量名,使用${}括起来的任意表达式都能够在字符串中被识别为代码输出。
val text = "This is text"
println("Text length is ${text.length}")
其中,text.length是访问了text的衡量长度方法,可以得到变量的长度。
 返回结果如下。
Text length is 12
同时,字符串与转义字符串内部都支持模板,如果需要在原始字符串中表示字面值美元符$,则可以使用下列语法。
val price = "${'$'}9.99 "
输出结果如下。
$9.99
(三)字符串拼接
Kotlin的字符串可以使用加法操作符+实现字符串的拼接,不仅适用于连接字符串和字符串,同时也支持连接字符串与其他类型的值。
println("I am " + 10 + " years old!")
返回结果如下。
I am 10 years old!
(四)字符串转义
Kotlin有两种类型的字符串字面值:转义字符串可以有转义字符,以及原始字符串可以包含换行以及任意文本。转义字符有以下用法:
- 使用\n换行
- 使用反斜杠\对双引号""进行转义
- 使用三个引号即分界符"""将内部任何字符转换为字符串,还可以通过使用trimMargin()函数去除前导空格
具体示例如下。
println("Hello\nWorld!")// \n换行 
println("He says:\"Yes!\"")// \反斜杠转义双引号 
println("""val number = 1val char = 'c'""".trimIndent()
)// 分界符内部没有转义并且可以包含换行以及其他任何字符
返回结果如下。
Hello
World!
He says, “Yes!”
val number = 1
val char = ‘c’
三、类型强制转换
数据类型之间可以通过调用toType()方法来强行转换类型。
| 转换类型 | 方法 | 
|---|---|
| Byte | toByte() | 
| Short | toShort() | 
| Int | toInt() | 
| Long | toLong() | 
| Float | toFloat() | 
| Double | toDouble() | 
| Char | toChar() | 
| String | toString() | 
示例如下。
val before:Int = 100
println("transform to string:${before.toString()}")
返回结果如下。
transform to string:100
四、数学运算
(一)常见运算
在 Kotlin 中,支持以下常见的算术运算符:
| 符号 | 名称 | 作用 | 
|---|---|---|
| + | 加法运算符 | 用于执行两个操作数的相加运算 | 
| - | 减法运算符 | 用于执行两个操作数的相减运算 | 
| * | 乘法运算符 | 用于执行两个操作数的相乘运算 | 
| / | 除法运算符 | 用于执行两个操作数的相除运算 | 
| % | 取模运算符 | 用于获取两个操作数相除后的余数 | 
| ++ | 自增运算符 | 用于将操作数的值增加1 | 
| -- | 自减运算符 | 用于将操作数的值减少1 | 
(二)位运算
Kotlin中的位运算采用了中缀函数方式调用具名函数。
| 使用 | 名称 | 描述 | 示例 | 
|---|---|---|---|
| and或& | 位与 | 对两个二进制数的对应位进行与操作,只有当两个位都为1时,结果位才为1 | a and b或a & b | 
| or或| | 位或 | 对两个二进制数的对应位进行或操作,只有当至少一个位为1时,结果位才为1 | a or b或a | b | 
| xor或^ | 位异或 | 对两个二进制数的对应位进行异或操作,只有当两个位不相同时,结果位才为1 | a xor b或a ^ b | 
| inv或! | 位非 | 对一个二进制数的每个位取反,0 变为 1,1 变为 0 | inv(a)或!a | 
| shl或<< | 左移 | 将一个二进制数的所有位向左移动指定的位数,左侧的位将被丢弃,右侧空出的位用0填充 | a shl b或a << b | 
| shr或>> | 右移 | 将一个二进制数的所有位向右移动指定的位数,右侧的位将被丢弃,左侧空出的位用符号位填充(对于正数用0填充) | a shr b或a >> b | 
| ushr或>>> | 无符号右移 | 将一个二进制数的所有位向右移动指定的位数,右侧的位将被丢弃,左侧空出的位用0填充 | a ushr b或a >>> b | 
我是EC,一个永远在学习中的探索者,关注我,让我们一起进步!
