网站首页 > 技术文章 正文
变量的数据类型
任何编程语言都有自己的数据类型,例如,,Java编程语言中的数据类型包含基本数据类型和引用数据类型,其中基本数据类型包含数值型、字符型、布尔型,引用数据类型包括类、接口、数组、枚举、注解。而Kotlin语言中的数据类型不区分基本数据类型和引用数据类型,分为数值型、字符型、布尔型、数组型、字符串型。
数值类型
Kotlin中的数值类型与Java中数值类型相似,包括Byte(字节)、Short(短整型)、Int(整型)、Long(长整型)、Float(浮点型)、Double(双精度浮点型),只不过在Java中这些数值类型用小写字母表示,而在Kotlin中用首字母大写的形式表示。Kotlin中数值类型变量所占存储空间的大小以及存储值的范围如表所示:
类型名 | 描述 | 占用空间 | 存储值范围 | 示例 |
Byte | 字节 | 8位(1个字节) | -2^7 ~ (2^7 - 1) | var a : Byte = 1 |
Short | 短整型 | 16位(2个字节) | -2^15 ~ (2^15 - 1) | var b : Short = 1 |
Int | 整型 | 32位(4个字节) | -2^31 ~ (2^31 -1) | var c : Int = 1 |
Long | 长整型 | 64位(8个字节) | -2^63 ~ (2^63 -1) | var d : Long = 1L |
Float | 浮点型 | 32位(4个字节) | 1.4E-45 ~ 3.4E + 38,-3.4E + 38 ~ -1.4E-45 | var e : Float = 1f |
Double | 双精度浮点型 | 64位(8个字节) | 4.9E-324 ~ 1.7E+308,-1.7E+308 ~ -4.9E-324 | var f : Double = 1.0 |
表中,占用空间指的是不同类型的变量占用内存的大小。例如一个Byte类型的变量会占用1个字节大小的内存空间,存储的值只能是-2^7 ~ (2^7 - 1)的整数,一个Int类型的变量会占用4个字节大小的内存空间,存储值范围是-2^31 ~ (2^31 -1)的整数。需要注意的是,在为Long类型的变量赋值时,所有赋值的后面要加上一个字母L(只能是大写字母L),说明赋值为Long类型。如果赋的值未超出Int的取值范围,则可以省略字母L。
Float与Double类型主要用于存储带小数的数值,在这两个类型的存储值范围中,E表示以10为底的指数,E后面的“+”和“-”代表正指数和负指数,例如 1.4E-45表示1.4*10^-45。在Kotlin中,一个Float类型的变量赋值时需要在值得后面加上字母F(或小写的f),Double类型的变量在赋值时,值的后面不允许加D或者d,这点与Java不同。
布尔类型
布尔类型变量用于存储布尔值,在Kotlin中用Boolean表示,该类型的变量只有两个值,分别是true和false。具体示例如下:
字符类型
字符类型变量用于存储一个单一字符,在Kotlin中用“Char”表示。Kotlin中每个字符类型变量都会占用2个字节。在给Char类型的变量赋值时,需要用一对英文半角格式的单引号''把字符括起来,如'K'。具体示例如下:
与Java不同的是,在Kotlin中Char类型的变量不能直接赋值为数字,必须使用单引号把数字括起来才可以进行赋值。
字符串类型
字符串类型变量用于存储多个字符,它与Java中的字符串类型变量非常相似。字符串类型用“String”表示,在给String类型的变量赋值时,需要用一对英文半角格式的双引号""把字符括起来。具体示例如下:
数组类型
在Kotlin中,如果想定义多个类型相同的变量,用常规的定义方式则需要定义多个变量,非常麻烦,为此Kotlin中提供了数组类型的变量,数组是用Array表示,其中数值类型、布尔类型、字符类型都有数组的表现形式。这些数组类型变量的初始化有两种方式,一种是以"数据类型 ArrayOf()"方法进行初始化,另一种是以arrayOf()方法进行初始化。
接下来以IntArray、BooleanArray、CharArray类型数组为例来演示第一种方式,具体示例如下:
从数组的定义格式可以看出,数组在创建时使用的是intArrayOf()方法,而不是Java中的new关键字。
需要注意的是,在Kotlin中不能使用stringArrayOf()方法创建字符串类型数组,因为String不属于基本数据类型。要想在Kotlin中声明字符串数组,需要使用Array<String>,并且对应的初始化数组的方法也相应变成了 arrayOf(),这种初始化方式对于其他类型的数组同样适用。接下来以第二种方式初始化数组类型的变量,具体示例如下:
通过上述两种方式对比可以看出,第二种初始化方式更加简单,在实际开发中可以根据个人的喜好选择初始化方式。
值得一提的是,在初始化数组类型的变量时,变量的数据类型同样可以省略,例如 :
var string_array = arrayOf("Hello","World","!")
猜你喜欢
- 2024-09-20 Kotlin学习日记-类属性和字段(Properties/Fields)
- 2024-09-20 大厂面试原来是这样的,这份面试经你值得拥有
- 2024-09-20 Reactor 3 参考指南:5、Kotlin 支持
- 2024-09-20 Android 开发之 Kotlin 初始篇(kotlin安卓开发教程)
- 2024-09-20 Kotlin必须要掌握的常见高阶函数(kotlin从零到精通)
- 2024-09-20 Kotlin成为Android的官配编程语言
- 2024-09-20 Room & Kotlin 符号的处理(kotlin inline crossinline)
- 2024-09-20 Kotlin - 数据类型(kotlin 函数类型)
- 2024-09-20 Duolingo 如何将 Android App 全部迁至 Kotlin
- 2024-09-20 Kotlin官方文档翻译,类和对象:属性、接口、可见性修饰
- 1514℃桌面软件开发新体验!用 Blazor Hybrid 打造简洁高效的视频处理工具
- 563℃Dify工具使用全场景:dify-sandbox沙盒的原理(源码篇·第2期)
- 508℃MySQL service启动脚本浅析(r12笔记第59天)
- 486℃服务器异常重启,导致mysql启动失败,问题解决过程记录
- 485℃启用MySQL查询缓存(mysql8.0查询缓存)
- 465℃「赵强老师」MySQL的闪回(赵强iso是哪个大学毕业的)
- 445℃mysql服务怎么启动和关闭?(mysql服务怎么启动和关闭)
- 442℃MySQL server PID file could not be found!失败
- 最近发表
- 标签列表
-
- c++中::是什么意思 (83)
- 标签用于 (65)
- 主键只能有一个吗 (66)
- c#console.writeline不显示 (75)
- pythoncase语句 (81)
- es6includes (73)
- windowsscripthost (67)
- apt-getinstall-y (86)
- node_modules怎么生成 (76)
- c++int转char (75)
- static函数和普通函数 (76)
- el-date-picker开始日期早于结束日期 (70)
- js判断是否是json字符串 (67)
- checkout-b (67)
- c语言min函数头文件 (68)
- asynccallback (71)
- localstorage.removeitem (74)
- vector线程安全吗 (70)
- & (66)
- java (73)
- js数组插入 (83)
- mac安装java (72)
- eacces (67)
- 查看mysql是否启动 (70)
- 无效的列索引 (74)