当前位置: 首页 > news >正文

kotlin数据类型

 

dd3f5d43598c2a98a8352180c00a09de.png

人不走空

 

                                                                      

      🌈个人主页:人不走空      

💖系列专栏:算法专题

⏰诗词歌赋:斯是陋室,惟吾德馨

 

da14e5cf865a427ea959fca470d8245a.gif

73a073f2038d4878a92d3f446341b79e.png 

Kotlin基本数值类型

基本数据类型包括 Byte、Short、Int、Long、Float、Double 

整数类型

类型位宽最小值最大值
Byte8-128127
Short16-3276832767
Int32-2,147,483,648 (-2^31)2,147,483,647 (2^31 - 1)
Long64-9,223,372,036,854,775,808 (-2^63)9,223,372,036,854,775,807 (2^63 - 1)
val number =          100 //默认是 Int 类型
val bigNumber =       8000000000 //超过 Int 最大值默认是 Long 类型
val longNumber =      20L //数字后面显式加L,表示声明 Long 类型
val byteNumber:Byte = 1

 

 Tips

 

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

Float、Double浮点类型

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

类型位宽
Float32
Double64*
val doubleNumber = 3.1415928888  //默认是Double类型
val floatNumber  = 3.1415928888f //尾部加f或F显式表示这是一个Float类型的浮点数

 

 Tips

 

Kotlin 对于小数的默认推断是Double类型。如果需要显式将一个小数指定为Float类型需要在数值尾部加入fF。由于Float类型十进制位数是6位,所以上述例子中floatNumber实际值大小为3.1415926,后面就会出现进度丢失舍弃。

在 Kotlin 中还有一点与 Java 不同的是,Kotlin 中数字不存在隐式的拓宽转换。比如一个函数参数为Double 的函数只能接收 Double 类型,不能接收 FloatInt 或者其他数字类型

字符类型

在 Kotlin 中字符用 Char 类型表示

fun testChar(char: Char) {if(char == 4) {...}//此处会提示类型不匹配的异常
}

字符的值需要用单引号括起来: '0''9'

fun decimalDigitValue(c: Char): Int {if (c !in '0'..'9')throw IllegalArgumentException("Out of range")return c.toInt() - '0'.toInt() // 显式转换为数字
}

布尔类型

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

val isVisible: Boolean = falseval isVisible = false    //自动推断为布尔Boolean类型

字符串类型

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

val str="1234567890"for(char in str) {println(char)
}

字符串模板

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

val number = 100
println("The Result is $number")

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

val text = "This is Text"
println("Text length is ${text.length}")

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

val price = "${'$'}9.99"

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

val age = 28
println("I am " + age + "years old!")
println("I am $age years old!")

字符串的值

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

val s = "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": "value1"}|{"key2": "value2"}""".trimMargin()

类型强制转换

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

类型强转函数
BytetoByte()
ShorttoShort()
InttoInt()
LongtoLong()
FloattoFloat()
DoubletoDouble()
ChartoChar()
val number =100   //声明一个整形 number对象
number.toString()
number.toByte()
number.toShort()
number.toLong()
number.toFloat()
number.toDouble()
....

数字运算

四则运算

除法/

val number = 3 / 2
println(number) // 输出 1val 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

位运算

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

  • shl(bits) – 有符号左移【shl是Shift Logical Left的缩写】
  • shr(bits) – 有符号右移
  • ushr(bits) – 无符号右移
  • and(bits) – 位
  • or(bits) – 位
  • inv() – 位
  • xor(bits) – 位异或
val vip= true
val admin= falseval result = vip and(admin) =false val result = 8 ushr(2) = 2

AS4.0及以上版本kotlin项目无法运行java-main方法解决方案

<option name="delegatedBuild" value="false" />

Kotlin基本数值类型

基本数据类型包括 Byte、Short、Int、Long、Float、Double 

整数类型

类型位宽最小值最大值
Byte8-128127
Short16-3276832767
Int32-2,147,483,648 (-2^31)2,147,483,647 (2^31 - 1)
Long64-9,223,372,036,854,775,808 (-2^63)9,223,372,036,854,775,807 (2^63 - 1)
val number =          100 //默认是 Int 类型
val bigNumber =       8000000000 //超过 Int 最大值默认是 Long 类型
val longNumber =      20L //数字后面显式加L,表示声明 Long 类型
val byteNumber:Byte = 1

 

 Tips

 

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

Float、Double浮点类型

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

类型位宽
Float32
Double64
val doubleNumber = 3.1415928888  //默认是Double类型
val floatNumber  = 3.1415928888f //尾部加f或F显式表示这是一个Float类型的浮点数

 

 Tips

 

Kotlin 对于小数的默认推断是Double类型。如果需要显式将一个小数指定为Float类型需要在数值尾部加入fF。由于Float类型十进制位数是6位,所以上述例子中floatNumber实际值大小为3.1415926,后面就会出现进度丢失舍弃。

在 Kotlin 中还有一点与 Java 不同的是,Kotlin 中数字不存在隐式的拓宽转换。比如一个函数参数为Double 的函数只能接收 Double 类型,不能接收 FloatInt 或者其他数字类型

字符类型

在 Kotlin 中字符用 Char 类型表示

fun testChar(char: Char) {if(char == 4) {...}//此处会提示类型不匹配的异常
}

字符的值需要用单引号括起来: '0''9'

fun decimalDigitValue(c: Char): Int {if (c !in '0'..'9')throw IllegalArgumentException("Out of range")return c.toInt() - '0'.toInt() // 显式转换为数字
}

布尔类型

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

val isVisible: Boolean = falseval isVisible = false    //自动推断为布尔Boolean类型

字符串类型

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

val str="1234567890"for(char in str) {println(char)
}

字符串模板

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

val number = 100
println("The Result is $number")

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

val text = "This is Text"
println("Text length is ${text.length}")

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

val price = "${'$'}9.99"

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

val age = 28
println("I am " + age + "years old!")
println("I am $age years old!")

字符串的值

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

val s = "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": "value1"}|{"key2": "value2"}""".trimMargin()

类型强制转换

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

类型强转函数
BytetoByte()
ShorttoShort()
InttoInt()
LongtoLong()
FloattoFloat()
DoubletoDouble()
ChartoChar()
val number =100   //声明一个整形 number对象
number.toString()
number.toByte()
number.toShort()
number.toLong()
number.toFloat()
number.toDouble()
....

数字运算

四则运算

除法/

val number = 3 / 2
println(number) // 输出 1val 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

位运算

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

  • shl(bits) – 有符号左移【shl是Shift Logical Left的缩写】
  • shr(bits) – 有符号右移
  • ushr(bits) – 无符号右移
  • and(bits) – 位
  • or(bits) – 位
  • inv() – 位
  • xor(bits) – 位异或
val vip= true
val admin= falseval result = vip and(admin) =false val result = 8 ushr(2) = 2

AS4.0及以上版本kotlin项目无法运行java-main方法解决方案

<option name="delegatedBuild" value="false" />

Kotlin基本数值类型

基本数据类型包括 Byte、Short、Int、Long、Float、Double 

整数类型

类型位宽最小值最大值
Byte8-128127
Short16-3276832767
Int32-2,147,483,648 (-2^31)2,147,483,647 (2^31 - 1)
Long64-9,223,372,036,854,775,808 (-2^63)9,223,372,036,854,775,807 (2^63 - 1)
val number =          100 //默认是 Int 类型
val bigNumber =       8000000000 //超过 Int 最大值默认是 Long 类型
val longNumber =      20L //数字后面显式加L,表示声明 Long 类型
val byteNumber:Byte = 1

 

 Tips

 

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

Float、Double浮点类型

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

类型位宽
Float32
Double64
val doubleNumber = 3.1415928888  //默认是Double类型
val floatNumber  = 3.1415928888f //尾部加f或F显式表示这是一个Float类型的浮点数

 

 Tips

 

Kotlin 对于小数的默认推断是Double类型。如果需要显式将一个小数指定为Float类型需要在数值尾部加入fF。由于Float类型十进制位数是6位,所以上述例子中floatNumber实际值大小为3.1415926,后面就会出现进度丢失舍弃。

在 Kotlin 中还有一点与 Java 不同的是,Kotlin 中数字不存在隐式的拓宽转换。比如一个函数参数为Double 的函数只能接收 Double 类型,不能接收 FloatInt 或者其他数字类型

字符类型

在 Kotlin 中字符用 Char 类型表示

fun testChar(char: Char) {if(char == 4) {...}//此处会提示类型不匹配的异常
}

字符的值需要用单引号括起来: '0''9'

fun decimalDigitValue(c: Char): Int {if (c !in '0'..'9')throw IllegalArgumentException("Out of range")return c.toInt() - '0'.toInt() // 显式转换为数字
}

布尔类型

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

val isVisible: Boolean = falseval isVisible = false    //自动推断为布尔Boolean类型

字符串类型

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

val str="1234567890"for(char in str) {println(char)
}

字符串模板

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

val number = 100
println("The Result is $number")

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

val text = "This is Text"
println("Text length is ${text.length}")

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

val price = "${'$'}9.99"

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

val age = 28
println("I am " + age + "years old!")
println("I am $age years old!")

字符串的值

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

val s = "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": "value1"}|{"key2": "value2"}""".trimMargin()

类型强制转换

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

类型强转函数
BytetoByte()
ShorttoShort()
InttoInt()
LongtoLong()
FloattoFloat()
DoubletoDouble()
ChartoChar()
val number =100   //声明一个整形 number对象
number.toString()
number.toByte()
number.toShort()
number.toLong()
number.toFloat()
number.toDouble()
....

数字运算

四则运算

除法/

val number = 3 / 2
println(number) // 输出 1val 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

位运算

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

  • shl(bits) – 有符号左移【shl是Shift Logical Left的缩写】
  • shr(bits) – 有符号右移
  • ushr(bits) – 无符号右移
  • and(bits) – 位
  • or(bits) – 位
  • inv() – 位
  • xor(bits) – 位异或
val vip= true
val admin= falseval result = vip and(admin) =false val result = 8 ushr(2) = 2

AS4.0及以上版本kotlin项目无法运行java-main方法解决方案

<option name="delegatedBuild" value="false" />

8b8adc992ad84405a1b222e8473ee7b4.png

 


作者其他作品:

【Java】Spring循环依赖:原因与解决方法

OpenAI Sora来了,视频生成领域的GPT-4时代来了

[Java·算法·简单] LeetCode 14. 最长公共前缀 详细解读

【Java】深入理解Java中的static关键字

[Java·算法·简单] LeetCode 28. 找出字a符串中第一个匹配项的下标 详细解读

了解 Java 中的 AtomicInteger 类

算法题 — 整数转二进制,查找其中1的数量

深入理解MySQL事务特性:保证数据完整性与一致性

Java企业应用软件系统架构演变史

 

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • 智慧金融-数据可视化
  • 搭建nginx https 反向代理 http tomcat服务实践。
  • 移动应用安全需求分析与安全保护工程
  • java内部类的本质
  • 计算器原生js
  • 第一章 深度学习和神经网络
  • sonar 8.9版本k8s安装部署
  • Jetpack Compose实现一个简单的微信UI
  • C/C++ 进阶(7)模拟实现map/set
  • 论文研读:ViT-V-Net—用于无监督3D医学图像配准的Vision Transformer
  • 《C++并发编程实战》笔记(一、二)
  • 抗量子密码算法:保障未来信息安全的新盾牌
  • 比赛获奖的武林秘籍:06 5 分钟速通比赛路演答辩,国奖选手的血泪经验!
  • 《JavaScript权威指南第7版》中文PDF+英文PDF+源代码 +JavaScript权威指南(第6版)(附源码)PDF下载阅读分享推荐
  • Hadoop-25 Sqoop迁移 增量数据导入 CDC 变化数据捕获 差量同步数据 触发器 快照 日志
  • 2017前端实习生面试总结
  • Babel配置的不完全指南
  • Java 23种设计模式 之单例模式 7种实现方式
  • java2019面试题北京
  • Java新版本的开发已正式进入轨道,版本号18.3
  • Laravel 菜鸟晋级之路
  • mac修复ab及siege安装
  • Mac转Windows的拯救指南
  • quasar-framework cnodejs社区
  • SOFAMosn配置模型
  • ⭐ Unity 开发bug —— 打包后shader失效或者bug (我这里用Shader做两张图片的合并发现了问题)
  • V4L2视频输入框架概述
  • 第2章 网络文档
  • 搞机器学习要哪些技能
  • 工作中总结前端开发流程--vue项目
  • 力扣(LeetCode)965
  • 前端面试之闭包
  • 软件开发学习的5大技巧,你知道吗?
  • 深度学习中的信息论知识详解
  • 微服务框架lagom
  • 线上 python http server profile 实践
  • 以太坊客户端Geth命令参数详解
  • 怎么将电脑中的声音录制成WAV格式
  • 【运维趟坑回忆录 开篇】初入初创, 一脸懵
  • Play Store发现SimBad恶意软件,1.5亿Android用户成受害者 ...
  • 机器人开始自主学习,是人类福祉,还是定时炸弹? ...
  • ​软考-高级-系统架构设计师教程(清华第2版)【第20章 系统架构设计师论文写作要点(P717~728)-思维导图】​
  • ​一文看懂数据清洗:缺失值、异常值和重复值的处理
  • %check_box% in rails :coditions={:has_many , :through}
  • (2)关于RabbitMq 的 Topic Exchange 主题交换机
  • (2022版)一套教程搞定k8s安装到实战 | RBAC
  • (35)远程识别(又称无人机识别)(二)
  • (DenseNet)Densely Connected Convolutional Networks--Gao Huang
  • (Mirage系列之二)VMware Horizon Mirage的经典用户用例及真实案例分析
  • (阿里云在线播放)基于SpringBoot+Vue前后端分离的在线教育平台项目
  • (安全基本功)磁盘MBR,分区表,活动分区,引导扇区。。。详解与区别
  • (二)Eureka服务搭建,服务注册,服务发现
  • (二)fiber的基本认识
  • (分布式缓存)Redis持久化
  • (附源码)spring boot基于Java的电影院售票与管理系统毕业设计 011449